zoukankan      html  css  js  c++  java
  • appium_python 怎样实现参数化自动生成用例

    1.对于一种对同一个页面同一点 要用不同数据测试形成多条测试用例,如果复制的话 会让代码很冗长,并且并不好维护,现在用封装的方法把 不变的代码 和 变化的参数 分别封装,形成动态 生成测试用例 ,主要用到 python中 setattr()重新定义属性的方法实现 ,具体原理为:如果该对象中没有这种属性,会自动加上这个属性,如果存在,则忽略

    好了 上代码:

    # conding=utf-8
    from appium import webdriver
    import time
    import sys
    import re
    import HTMLTestRunner
    import unittest
    import xlrd  #excel驱动程序
    from test import test_support
    from xlrd import open_workbook
    
    
    class Login(unittest.TestCase):
        def setUp(self):
            pass
    
        def clear(self):
            pass
    
        desired_caps = {
            'platformName': 'Android',
            'deviceName': 'FA56GB105163',
            'platformVersion': '5.0.2',
            'appPackage': 'com.zhonghong.www.qianjinsuo',
            'appActivity': 'com.zhonghong.www.qianjinsuo.main.activity.qjsMian.main.LoadingActivity',
            'unicodeKeyboard': True,  # 使用unicodeKeyboard的编码方式来发送字符串 ,可以实现输入中文
            'resetKeyboard': True  # 隐藏虚拟键盘,防止遮挡元素
        }
        driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
        # 休眠15s等待程序启动
        time.sleep(2)
        driver.find_element_by_id("com.zhonghong.www.qianjinsuo:id/rb_zhiye_service").click()
        print("aaaaaaa")
    
        def getTest(self, arg1, arg2, arg3, arg4):  # 定义的函数,最终生成的测试用例的执行方法
            if arg1 =='': #判断是否为空
               asx=arg1
            else:asx=int(arg1)
            add=int(arg2)
            eee=arg3
            print(asx)
    
            self.driver.find_element_by_id("com.zhonghong.www.qianjinsuo:id/textfield_et_phone_num").clear()
            self.driver.find_element_by_id("com.zhonghong.www.qianjinsuo:id/textfield_et_phone_num").send_keys(asx)
            self.driver.find_element_by_id("com.zhonghong.www.qianjinsuo:id/textfield_et_pass").clear()
            self.driver.find_element_by_id("com.zhonghong.www.qianjinsuo:id/textfield_et_pass").send_keys(add)
            self.driver.find_element_by_id("com.zhonghong.www.qianjinsuo:id/login").click()
            time.sleep(1)
            ee = self.driver.find_elements_by_id("com.zhonghong.www.qianjinsuo:id/tv_error_text")
            self.assertEqual(eee, ee[0].text)
    
        @staticmethod
        def getTestFunc(arg1, arg2, arg3, arg4):
            def func(self):
                self.getTest(arg1, arg2, arg3, arg4)
    
            return func
    
    
    def __generateTestCases():
        data = open_workbook('D:\test.xls')  # 打开文件
        table = data.sheet_by_index(0)  # 遍历所有数据
    # datas = table.row_values(0) # 获取整列数据 nrows
    = table.nrows #获得行数 list = [] for i in range(1, nrows): #忽略表头 ,开始遍历 datas = table.row_values(i) #获得每行的数据 list.append(datas) #加载到list中 print(list) for args in list: print(args) setattr(Login, 'test_func_%s' % args[3], Login.getTestFunc(*args)) # 通过setattr自动为TestCase类添加成员方法,方法以“test_func_”开头 __generateTestCases() if __name__ == '__main__': suite = unittest.TestSuite() suite.addTest(Login('test_func_smillphoone')) suite.addTest(Login('test_func_longphone')) suite.addTest(Login('test_func_nullphone')) timestr = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time())) filename = "D:\result_" + timestr + ".html" print (filename) fp = open(filename, 'wb') runner = HTMLTestRunner.HTMLTestRunner( stream=fp, title='测试结果', description='测试报告' ) #suite = unittest.TestLoader().loadTestsFromTestCase(ContactsAndroidTests) #unittest.TextTestRunner(verbosity=2).run(suite) runner.run(suite) #g_browser.quit() fp.close() #测试报告关闭


    excel

    username password duanyan 用例
    1111 1234567 请输入正确的手机号 smillphoone
    22222222222 1111111 请输入正确的手机号 longphone
      123456 请输入手机号 nullphone

    执行结果:

    charu

  • 相关阅读:
    C#序列化和反序列化开发者在线 Builder.com.cn 更新时间:20080904
    提高C#编程水平不可不读的50个要诀 开发者在线 Builder.com.cn 更新时间:20080805作者: 来源:开发者在线
    CollapsiblePanelExtender这Ajax控件
    100个冷笑话,越往后越冷(郁闷时专用……)赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞
    [转]eclipse java build path
    [转]线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~
    水晶报表最后空页解决方法
    JQuery资源
    Windows Explorer中对所选文件增加右键菜单并关联自己程序的例子
    [转]Oracle如何复制表的sql语句
  • 原文地址:https://www.cnblogs.com/hanzhao1987/p/5961952.html
Copyright © 2011-2022 走看看