예제 #1
0
class TestChargeListPage(unittest.TestCase):
    """交易流水模块-充值"""
    @classmethod
    def setUpClass(cls):
        cls.driver = select_Browser_WebDriver()
        cls.url = getBaseUrl('POS_URL') + '/charge/listcharge'

    @unittest.skipIf(getRunFlag('CHARGELIST', 'testCase1') == 'N', '验证执行配置')
    @ddt.data(*chargeData)
    @replayCaseFail(num=3)
    def testCase1(self, data):
        """充值撤销"""
        print '功能:{0}'.format(data['desc'])
        """前置操作"""
        #实例化ChargeListPage类
        self.charge = ChargeListPage(self.url, self.driver, data['pageTitle'])
        # 打开目标页
        self.charge.open
        """页面操作"""
        #单击 撤值撤销链接
        self.charge.clickUndoLinkText

        #单击 确定按钮
        self.charge.clickConfirmBtn
        """断言操作"""
        #断言成功
        txt = self.charge.getChargeStatusTxt
        print '充值撤销状态:{0}'.format(txt)
        self.assertEqual(txt, u'撤销充值', msg='撤销充值记录列表中,不存在状态为<撤销充值>的记录')

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()
class TestConsumeListPage(unittest.TestCase):
    """交易流水-消费"""
    @classmethod
    def setUpClass(cls):
        cls.driver = select_Browser_WebDriver()
        cls.url = getBaseUrl('POS_URL') + '/consume/list'

    @unittest.skipIf(getRunFlag('CONSUMELIST', 'testCase1') == 'N', '验证执行配置')
    @ddt.data(*consumeData)
    @replayCaseFail(num=3)
    def testCase1(self, data):
        """交易流水-撤销消费"""
        print '功能:{0}'.format(data['desc'])

        #实例化ConsumeListPage类
        self.consumeList = ConsumeListPage(self.url, self.driver,
                                           data['consumeListTitle'])
        # 打开目标地址
        self.consumeList.open

        #单击撤销消费 链接
        self.consumeList.clickUndoLinkText
        #单击 确定按钮
        self.consumeList.clickConfirmBtn
        """断言"""
        self.assertTrue(self.consumeList.assertCancelSuccess)  #断言,弹出撤销成功div框

        self.assertEqual(self.consumeList.getContentText,
                         u'撤销消费')  #撤销消费,列表中增加一条撤销记录

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()
예제 #3
0
class TestBjPrintPage(unittest.TestCase):
    """班结小票打印"""
    @classmethod
    def setUpClass(cls):
        cls.driver = select_Browser_WebDriver()
        cls.url = 'http://pos.beta.acewill.net/consume/list'

    @unittest.skipIf(getRunFlag('PRINT', 'testCase1') == 'N', '验证执行配置')
    @ddt.data(*printData)
    @replayCaseFail(num=3)
    def testCase1(self, data):
        """班结小结打印"""
        print('功能:{0}'.format(data['desc']))

        #实例化BjPrintPage类
        self.bjPrint = BjPrintPage(self.url, self.driver, u'消费 - 微生活POS系统')
        # 打开交易流水页面
        self.bjPrint.open

        #点击 班结小票链接
        self.bjPrint.clickPrintLinkText

        #点击 打印按钮
        self.bjPrint.clickPrintBtn

        time.sleep(5)  #等待3秒
        self.bjPrint.switch_window  #切换到新窗口
        """断言"""
        self.assertTrue(self.bjPrint.assertPrint)  #断言弹出最后打印界面,打印按钮存在

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()
class TestNumberCardListPage(unittest.TestCase):
    """交易流水模块"""
    @classmethod
    def setUpClass(cls):
        cls.driver = select_Browser_WebDriver()
        cls.url = getBaseUrl('POS_URL') + '/numbercard/list'

    @unittest.skipIf(
        getRunFlag('NUMBERCARDLIST', 'testCase1') == 'N', '验证执行配置')
    @ddt.data(*listCardData)
    @replayCaseFail(num=3)
    def testCase1(self, data):
        """次卡消费撤销"""
        print '功能:{0}'.format(data['desc'])

        #实例化NumberCardListPage类
        self.list = NumberCardListPage(self.url, self.driver, data['title'])
        # 打开目标地址
        self.list.open
        """撤销操作"""
        #单击撤销消费
        self.list.clickUndoLink
        #单击确定按钮
        self.list.clickConfirmButton
        """检查断言"""
        self.assertTrue(self.list.assertSuccess)  #断言,撤销后,状态是否存在
        self.assertEqual(self.list.getUndoStatus, '撤销消费')  #断言状态是否为 撤销消费

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()
class TestCouponsaleIndexPage(unittest.TestCase):
    """商品售卖模块"""
    @classmethod
    def setUpClass(cls):
        cls.driver = select_Browser_WebDriver()
        cls.url = getBaseUrl('POS_URL') +'/couponsale/index'



    @unittest.skipIf(getRunFlag('COUPONSALEINDEX',('testCase1'))=='N','验证执行配置')
    @ddt.data(*shopData)
    @replayCaseFail(num=3)
    def testCase1(self,data):
        """商品售卖-券包+次卡+直接购买"""
        print '功能:{0}'.format(data['desc'])

        #实例化CouponsaleIndexPage类
        self.shop = CouponsaleIndexPage(self.url,self.driver,data['title'])
        # 打开目标url
        self.shop.open

        """输入会员卡号,或手机号页"""
        #输入手机号或卡号
        self.shop.inputPhoneOrCard(data['phoneOrCard'])
        #点击 确定按钮
        self.shop.clickConfirmBtn

        """商品售卖页"""
        #批量 勾选商品复选框
        self.shop.clickiterSelect
        #单击 确定按钮,提交售卖
        self.shop.clickShopConfirmBtn

        #输入交易密码
        self.shop.inputPaypwd(data['password'])
        #交易密码对话框确定
        self.shop.clickConfirmPaypwd

        """后置断言操作"""
        self.assertTrue(self.shop.assertShopSuccess)#断言售卖成功后,返回到输入卡号或手机号页面



    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()
예제 #6
0
class TestCreditPage(unittest.TestCase):
    """积分兑换模块"""
    @classmethod
    def setUpClass(cls):
        """初始化webdriver"""
        cls.driver = select_Browser_WebDriver()
        cls.url = getBaseUrl('POS_URL') + '/credit'

    def creditFunc(self, data):
        '''输入卡号或手号并点击确定'''
        self.credit = CreditPage(self.url, self.driver, u"积分换礼 - 微生活POS系统")
        # 增加cookies信息,并打开积分换礼页
        self.credit.open

        #输入手机号或卡号
        self.credit.inputPhoneorCard(data['charge_number'])
        #单击 确定按钮
        self.credit.clickPhoneConfirmBtn

    @unittest.skipIf(getRunFlag('CREDIT', 'testCase1') == 'N', '验证执行配置')
    @ddt.data(*creditData)
    @replayCaseFail(num=3)
    def testCase1(self, data):
        '''积分换礼'''
        print '{0}'.format(data['desc'])

        # 输入手机号,或卡号,进入积分换礼页面
        self.creditFunc(data)
        #积分规则
        self.credit.clickIterCheckBox
        #积分数量
        self.credit.inputCreditNumber(data['ExchangeNumber'])
        #积分详情
        self.credit.inputCreditDetail(data['ExchangeDetail'])
        #确定按钮 提交
        self.credit.clickConfirmBtn

        # 成功兑换断言
        self.credit.assertPaySuccess

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()
class TestNumberCardPage(unittest.TestCase):
    """次卡消费模块"""
    @classmethod
    def setUpClass(cls):
        cls.driver = select_Browser_WebDriver()
        cls.url = getBaseUrl('POS_URL') +'/numbercard'

    @unittest.skipIf(getRunFlag('NUMBERCARD', 'testCase1') == 'N', '验证执行配置')
    @ddt.data(*numberCardData)
    @replayCaseFail(num=3)
    def testCase1(self,data):
        """次卡消费"""
        print '功能:{0}'.format(data['desc'])

        #实例化NumberCardPage类
        self.number = NumberCardPage(self.url,self.driver,data['title'])
        # 打开目标地址
        self.number.open

        """输入手机号或卡号进入次卡消费界面"""
        #输入手机号或卡号
        self.number.inputPhoneOrCard(data['phoneOrCard'])
        #单击 确定按钮
        self.number.clickNumberCardButton

        """次卡消费界面,操作"""
        #输入 次卡使用次数
        self.number.inputNumberUse(data['useNum'])
        #单击确定按钮,提交
        self.number.clickSubmitButton

        """检查断言"""
        self.assertTrue(
            self.number.assertSuccess,
            msg='检查消费后,返回到,输入手机号界面'
        )#检查消费后,返回到,输入手机号界面


    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()
class TestConsumeCouponListPage(unittest.TestCase):
    """交易流水模块"""
    @classmethod
    def setUpClass(cls):
        cls.driver = select_Browser_WebDriver()
        cls.url = getBaseUrl('POS_URL') +'/consume/couponlist'



    @unittest.skipIf(getRunFlag('CONSUMECOUPONLIST',('testCase1'))=='N','验证执行配置')
    @ddt.data(*shopCancelData)
    @replayCaseFail(num=3)
    def testCase1(self,data):
        """交易流水-撤销商品售卖"""
        print '功能:{0}'.format(data['desc'])

        #实例化ConsumeCouponListPage类
        self.undo = ConsumeCouponListPage(self.url,self.driver,data['title'])
        # 打开目标url
        self.undo.open

        """商品售卖,撤销"""
        #单击 撤销商口售卖
        self.undo.clickUndoLinkText
        #单击 确定按钮
        self.undo.clickUndoConfirmBtn

        """后置断言操作"""
        self.assertTrue(self.undo.assertSuccess)
        self.assertEqual(self.undo.getContentText,'撤销商品售卖')



    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()
class TestCreditListPage(unittest.TestCase):
    """交易流水模块-积分换礼"""

    @classmethod
    def setUpClass(cls):
        cls.driver = select_Browser_WebDriver()
        cls.url = getBaseUrl('POS_URL') +'/credit/list'

    @unittest.skipIf(getRunFlag('CREDITLIST', 'testCase1') == 'N', '验证执行配置')
    @ddt.data(*creditData)
    @replayCaseFail(num=3)
    def testCase1(self, data):
        """交易流水-撤销积分"""
        print '功能:{0}'.format(data['desc'])

        #实例化CreditListPage类
        self.creditList = CreditListPage(self.url,self.driver,data['CreditListTitle'])
        # 打开目标地址
        self.creditList.open

        """撤销积分页操作"""
        #单击 撤销积分
        self.creditList.clickUndoLinkText
        #单击确定 按钮
        self.creditList.clickUndoBtn

        """断言"""
        self.assertEqual(
            self.creditList.assertUndoSuccess,
            '撤销积分换礼'
        )#撤销积分后,在列表显示一条,状态为撤销积分换礼记录


    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()
class TestChargePage(unittest.TestCase):
    '''储值模块'''
    @classmethod
    def setUpClass(cls):

        cls.driver = select_Browser_WebDriver()
        cls.url = getBaseUrl('POS_URL') + '/charge/index'

    def inChargePage(self, data):
        """输入卡号进入储值页面"""
        #实例化ChargePage类
        self.charge = ChargePage(self.url, self.driver, '充值 - 微生活POS系统')
        # 打开目标url
        self.charge.open
        """输入卡号,确定,进入储值页面"""
        #输入 卡号
        self.charge.inputPhoneOrCardNo((data['charge_number']))
        #单击 确定
        self.charge.clickConfirmBtn
        """断言操作"""
        #储值余额
        self.assertTrue(self.charge.assertfindRMB)

        #储值前的 储值余额
        self.usChargeSaving = self.charge.getAfterRMB

        print '当前余额:{0}'.format(self.usChargeSaving)

    def chargeFunc(self, data):
        """储值功能操作"""
        print '功能:{0}'.format(data['desc'])
        """输入卡号或手机号,确定,进入储值页面"""
        self.inChargePage(data)
        """储值操作"""
        #选择储值奖励规则
        self.charge.clickChargeGZ
        #单击 自定义规则
        self.charge.clickCustomGZ
        #输入 自定义金额
        self.charge.inputCustomPresent(data['present'])
        #点击 自定义金额对话框  确定按钮
        self.charge.clickCustomConfirmBtn
        #点击 现金支付方式
        self.charge.clickPayType
        #输入 备注
        self.charge.inputRemark(data['note'])
        #单击 确定,进入储值确认对话框
        self.charge.clickSubmitBtn
        #单击 确认,并储值
        self.charge.clickLastConfirmBtn
        """断言操作"""
        self.charge.assertChargeSuccess
        """后置操作"""
        #单击 立即消费按钮
        self.charge.clickConsumeBtn
        """断言储值余额,是否正确"""
        #获取 储值后余额
        self.usDualSaving = self.charge.getLastRMB

        print '储值后当前余额:{0}'.format(self.usDualSaving)
        self.assertTrue(
            float(data['present']) +
            float(self.usChargeSaving) == float(self.usDualSaving))

    @unittest.skipIf(getRunFlag('CHARGE', 'testCase1') == 'N', '验证执行配置')
    @ddt.data(*chargeData)
    @replayCaseFail(num=3)
    def testCase1(self, data):
        """正常储值功能"""
        #调用储值功能函数
        self.chargeFunc(data)

    @unittest.skipIf(getRunFlag('CHARGE', 'testCase2') == 'N', '验证执行配置')
    @ddt.data(*FillData)
    @replayCaseFail(num=3)  #case执行失败后,重新执行num次
    def testCase2(self, data):
        """储值并补开发票"""

        # 调用储值功能函数
        self.chargeFunc(data)
        """补开发票"""
        #单击 补开发票按钮
        self.charge.clickFillReceipt
        #获取 未开票金额
        notFillPresent = self.charge.getNotFillPresent(data['txtName'])
        #输入 开票金额
        self.charge.inputFillPresent(notFillPresent)
        #单击 确定 开发票
        self.charge.clickFillConfirmBtn
        """断言补开票成功"""
        #单击 补开发票按钮
        self.charge.clickFillReceipt
        #获取 未开票金额
        notFillPresent = self.charge.getNotFillPresent(data['txtName'])

        print '补开发票金额剩余:{0}'.format(notFillPresent)
        #断言补开发票后,第一行补开发票为零
        self.assertEqual(notFillPresent, '0.00', msg='开票余额,不为零.')

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()
예제 #11
0
class TestConsumePage(unittest.TestCase):
    '''消费模块'''
    @classmethod
    def setUpClass(cls):
        cls.driver = select_Browser_WebDriver()
        cls.url = str(getBaseUrl('POS_URL')) + r'/consume'
        cls.excel = Excel(
            os.path.join(gl.dataPath, 'posCardData.xls').decode('utf-8'))
        cls.toexcel = Excel(
            os.path.join(gl.dataPath,
                         'posNotNameCardData.xls').decode('utf-8'))

    def consume_func(self, data):
        '''消费->输入卡号或手机号->确定'''
        self.consume = ConsumePage(self.url, self.driver, r'消费 - 微生活POS系统')

        # 打开浏览器,并转到消费页
        self.consume.open
        # 选择会员卡号/手机号
        self.consume.selectTab
        # 输入卡号或手机号
        self.consume.inputPhoneOrCardNo(data['phoneOrCard'])
        # 点击确定按钮
        self.consume.clickConfirmBtn

    """消费模块,动态选择券"""

    def iterCoupon(self):
        '''动态选择券'''
        couponDiv = self.driver.find_elements_by_class_name(
            self.consume.tcCouponDiv_loc)  #现金券
        for e in couponDiv:
            divEle = e.find_element_by_xpath(self.consume.tcTicket_loc)
            if divEle.is_displayed():
                divEle.click()  # 单击
                useCount = self.driver.find_element_by_name(
                    self.consume.tcUseCount)
                if useCount.is_displayed():
                    useCount.send_keys(1)
                    break

    def getCode(self, data):
        """
        从Boss获取验证码
        :param data: 参数化数据
        :return: 验证码
        """
        """参数变量url,cookies,time"""
        yamldict = getYamlfield(gl.configFile)
        cookies = yamldict['CONFIG']['Cookies']['BossLoginCookies']
        #timeStr = time.strftime('%Y-%m-%d')
        url = 'http://boss.beta.acewill.net/sms/search?phone={0}&begin={1}&end={2}'.format(
            data['PhoneNo'], gl.curDate, gl.curDate)
        """设置浏览器,选项,隐藏获窗口运行"""
        option = webdriver.ChromeOptions()
        option.add_argument('disable-infobars')  #不显示"Chrome正在受自动测试软件控制"
        option.add_argument('headless')  #后台运行,不显示界面
        """启动浏览器,增加cookies"""
        driver1 = webdriver.Chrome(chrome_options=option)
        driver1.maximize_window()
        driver1.get(url)
        driver1.implicitly_wait(30)
        driver1.add_cookie(cookies)
        driver1.get(url)
        """获取验证码,并返回验证码"""
        txtcode = driver1.find_element_by_xpath(
            self.consume.boss_code_xpath).text
        code = json.loads(txtcode)['template']['yanzhengma']
        driver1.quit()
        return code

    @unittest.skipIf(getRunFlag('CONSUME', ('testCase1')) == 'N', '验证执行配置')
    @ddt.data(*cardData)
    @replayCaseFail(num=3)
    def testCase1(self, data):
        '''实体卡开卡'''
        print '功能:{0}'.format(data['desc'])

        #获取卡号
        cardNo = {'phoneOrCard': str(self.excel.getCardNo())}
        print u"实体卡,卡号为:{0}".format(cardNo['phoneOrCard'])

        #进入消费页面
        self.consume_func(cardNo)
        # 实体卡开卡
        self.consume.clickOpenCardIco
        # 输入手机号
        self.consume.inputOpenCardPhone(data['PhoneNo'])
        # 姓名
        self.consume.inputOpenCardName(data['username'])
        # 性别
        self.consume.clickOpenCardSex
        # 生日
        self.consume.inputOpenCardBirthday(data['birthday'])
        # 交易密码
        self.consume.inputOpenPwd(data['password'])
        # 确定
        self.consume.clickOpenConfirmBtn

        #断言
        self.assertTrue(self.consume.assertCardSuccess)

    @unittest.skipIf(getRunFlag('CONSUME', ('testCase6')) == 'N', '验证执行配置')
    @ddt.data(*cardofData)
    @replayCaseFail(num=3)
    def testCase6(self, data):
        """不记名卡开卡"""
        print '功能:{0}'.format(data['desc'])

        # 获取磁道号
        cardNo = {'phoneOrCard': str(self.toexcel.getCardNo(cell_col=0))}
        #进入消费界面
        self.consume_func(cardNo)
        """开卡页面"""
        #单击不记名卡,确定
        self.consume.clickCardOfOpenBtn
        """断言操作"""
        self.assertTrue(self.consume.assertOpenCardSuccess)

    @unittest.skipIf(getRunFlag('CONSUME', 'testCase5') == 'N', '验证执行配置')
    @ddt.data(*cardBindData)
    @replayCaseFail(num=3)
    def testCase5(self, data):
        """实体卡绑卡"""
        print '功能:{0}'.format(data['desc'])

        # 获取卡号-字典类型
        cardNo = {'phoneOrCard': str(self.excel.getCardNo())}

        #进入绑卡绑卡图标选择页面
        self.consume_func(cardNo)

        #单击绑卡图标
        self.consume.clickBindCardIco
        #输入卡号
        self.consume.inputBindCardNo(data['PhoneNo'])
        #单击 确定
        self.consume.clickBindConfirmBtn
        #获取验证码
        code = self.getCode(data)  #获取验证码
        #输出验证码
        print '验证码:{0}'.format(code)
        #输入验证码
        self.consume.inputVerCode(code)
        #单击 验证码框 确定
        self.consume.clickVerCodeConfirmBtn
        """断言"""
        self.assertTrue(self.consume.assertCardSuccess, msg='实体卡绑定失败')

    @unittest.skipIf(getRunFlag('CONSUME', 'testCase2') == 'N', '验证执行配置')
    @ddt.data(*consumeData)
    @replayCaseFail(num=3)
    def testCase2(self, data):
        '''积分消费'''
        print u'功能:{0},消费{1}元,抵扣{2}积分.'.format(data['desc'],
                                               data['tcTotalFee'],
                                               data['credit'])

        # 进入消费页
        self.consume_func(data)

        #输入金额
        self.consume.inputTotalFee(data['tcTotalFee'])
        #清除储值支付金额
        self.consume.clearInputStoredPay
        #输入积分
        self.consume.inputUseCredit(data['credit'])
        #输入备注
        self.consume.inputRemark(data['desc'])
        #单击确认消费按钮
        self.consume.clickConsumeSubmitBtn
        #单击再次确认按钮
        self.consume.clickConsumeConfirmBtn
        '''输入密码点击确认'''
        #输入交易密码
        self.consume.inputPaypwd(data['dualCode'])
        #单击交易密码 确定按钮
        self.consume.clickConfirmPaypwd

        self.consume.assertPaySuccess  #支付成功断言

    @unittest.skipIf(getRunFlag('CONSUME', 'testCase3') == 'N', '验证执行配置')
    @ddt.data(*chargeDealData)
    @replayCaseFail(num=3)
    def testCase3(self, data):
        '''储值销费'''
        print u'功能:{0},消费金额{1},储值抵扣{2}元.'.format(data['desc'],
                                                 data['tcTotalFee'],
                                                 data['tcTotalFee'])
        # 进入消费页
        self.consume_func(data)
        # 输入金额
        self.consume.inputTotalFee(data['tcTotalFee'])
        # 输入备注
        self.consume.inputRemark(data['desc'])
        # 确认消费按钮
        self.consume.clickConsumeSubmitBtn
        # 最终确认消费
        self.consume.clickConsumeConfirmBtn
        '''输入密码点击确认'''
        #输入交易密码
        self.consume.inputPaypwd(data['dualCode'])
        #单击交易密码 确定按钮
        self.consume.clickConfirmPaypwd

        self.consume.assertPaySuccess  #支付成功断言

    @unittest.skipIf(getRunFlag('CONSUME', 'testCase4') == 'N', '验证执行配置')
    @ddt.data(*custCouponData)
    @replayCaseFail(num=3)
    def testCase4(self, data):
        '''券消费'''
        print u'功能:{0},消费{1}积分.'.format(data['desc'], data['tcTotalFee'])
        # 进入消费页
        self.consume_func(data)
        # 输入金额
        self.consume.inputTotalFee(data['tcTotalFee'])
        # 选择现金券
        self.iterCoupon()
        # 输入备注
        self.consume.inputRemark(data['desc'])
        # 确认消费按钮
        self.consume.clickConsumeSubmitBtn
        # 最终确认消费
        self.consume.clickConsumeConfirmBtn
        '''输入密码点击确认'''
        #输入交易密码
        self.consume.inputPaypwd(data['dualCode'])
        #单击交易密码 确定按钮
        self.consume.clickConfirmPaypwd

        self.consume.assertPaySuccess  #支付成功断言

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()