python ddt/paramunittest的使用

数据分离时需要把数据保存在文件中,如excel,批量循环读取数据时需要使用到数据驱动模块如ddt、paramunitest

1,读取excel 表格中的数据方法封装

    def excel_table_byindex(self,file,colnameindex):#根据索引获取excel表格中的数据,file:excel文件路径,colnameindex:表头列各所在行的
        data=xlrd.open_workbook(file)
        table=data.sheets()[0]
        nrows=table.nrows#行数
        colnames=table.row_values(colnameindex)#某一行数据
        list=[]
        for colnameindex in range(1,nrows):
            row=table.row_values(colnameindex)
            if row:
                app={}
                for i in range(len(colnames)):
                    app[colnames[i]]=str(row[i])
                list.append(app)
        return list

2,引用数据驱动模块循环读取数据

import ddt
input_value = Op.excel_table_byindex(file='D:\\My\\Interface-修改\\data\\testdata_block.xls', colnameindex=0)#测试用 @ddt.ddt class TestCertificate(unittest.TestCase): @ddt.data(*input_value) def test_blockchain(self,data): self.case_name=data['case_name'] self.seller_name = data['seller_name'] self.seller_address = data['seller_address'] # self.app_id=app_id self.seller_phone=data['seller_phone'] self.seller_bank_name = data['seller_bank_name'] self.seller_bank_account=data['seller_bank_account'] self.buyer_tax_code=data['buyer_tax_code'] self.buyer_title=data['buyer_title'] self.buyer_address=data['buyer_address'] self.buyer_phone= data['buyer_phone'] self.buyer_email= data['buyer_email'] self.buyer_bank_name=data['buyer_bank_name'] self.buyer_bank_account = data['buyer_bank_account'] self.remark = data['remark'] self.cashier = data['cashier'] self.checker = data['checker'] self.invoicer = data['invoicer'] self.call_back_url = data['call_back_url'] self.ep_app_id = data['ep_app_id'] self.expect=data['expect']

或者使用paramunittest

import paramunittest
input_value = Te.excel_table_byindex(file='D:\\My\\Partner\\P_testdata\\service_register_testdata.xls', colnameindex=0)
R=Register()
@paramunittest.parametrized(*input_value)
class TestLogin(unittest.TestCase):

    def setParameters(self, case_name,email,password,repeat,No):
        '''这里注意了,uname, passwd, texts三个参数和前面定义的字典一一对应'''
        self.case_name=case_name
        self.email = email
        self.password = password
        self.repeat=repeat
        self.No=No

    def test_register(self):
        self._testMethodDoc=self.case_name#设置用例名称
        self.url="http://partner.yewifi.com"
        # 判断数据库邮箱是否已被注册过
        r_id = Te.connect_db(database='privilege', sql="select id from qx_member where email='%s'" % self.email, charset='utf8')  # 检查数据库是否存在该邮箱号
        print(r_id)
        if r_id:  # 判断元组非空
            print(r_id[0][0])
            Te.connect_db(database='privilege', sql="delete from qx_member where email='%s'" % self.email,charset='utf8')  # 删除账户
            print("priviledge删除%s账户成功!" % self.email)
            Te.connect_db(database='fpmerchant', sql="delete from m_service_provider where user_id='%s'" % r_id[0][0],charset='utf8')  # 删除账户
            print("fpmerchant删除数据成功!")
            Te.connect_db(database='providers_db', sql="delete from gpi_provider where user_id='%s'" % r_id[0][0],charset='utf8')  # 删除账户
            print("providers_db删除数据成功!")
        else:
            print("账号:%s未被注册过" % self.email)
        R.register(self.url, self.email, self.password, self.repeat,browserType="FF")
        time.sleep(10)

        print(R.driver.find_element_by_xpath("//input[@name='username']").text)
        try:
            assert R.driver.find_element_by_xpath("//input[@id='username']").text == '%s' % self.email  # 注册后跳转到登录页,账号复写断言
            print("第%s条注册成功 !" % self.No)
        except:
            R.screenshot_image(pic_path='D://My//P_result//partner_screenshot//', pic_name='第%s条注册服务商' % str(self.No))
            print("第%s条注册失败 !" % self.No)
        print('第%s条测试结束' % self.No)
        time.sleep(3)
        R.close_Browser()

 

posted @ 2019-06-09 00:21  行走的小z  阅读(468)  评论(0编辑  收藏  举报