• 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()
  • 相关阅读:
    CentOS7搭建elasticsearch集群
    Centos7搭建redis集群及安装sentinel
    编译安装haproxy开启支持SSL
    CentOS7单节点部署redis主从复制和sentinel
    CentOS7单节点部署redis-cluster
    搭建hadoop集群
    配置nginx为FastDFS的storage server提供http访问接口
    FastDFS分布式存储
    一键部署Kubernetes高可用集群
    一键部署ETCD集群脚本
  • 原文地址:https://www.cnblogs.com/xiaozeng6/p/10992304.html
Copyright © 2020-2023  润新知