• Appium+Python之测试数据与脚本分离


    如果脚本中有很多的魔法数据,那代码的复用性就不会很高,所以我们需要将测试数据和脚本分离。

    思路:将测试数据放在一个json文件中,然后写一个读取json文件的基类,测试用例中通过调基类中方法来获取json文件中测试数据。

    S1:先在框架中建立一个json文件DataResource.json,用于存放测试数据

    {
      "pm": {
        "userName": "test1",
        "password": "123456"
      },
      "gov": {
        "userName": "test2",
        "password": "123456"
      }
    }

    S2:建立读取json文件的基类BaseJson.py

    # -*- coding:utf-8 -*-
    import json
    
    
    
    
    class Dict(dict):
        __setattr__ = dict.__setitem__
        __getattr__ = dict.__getitem__
    
    
    def dict_to_object(dict_obj):
        if not isinstance(dict_obj, dict):
            return dict_obj
        inst = Dict()#类实例化
        #循环遍历字典的key、value
        for k, v in dict_obj.items():
            inst[k] = v
        return inst
    
    #获取json文件内容
    def get_json():
        path = r'E://testing_code/code/SmartSiteTestScript/data/DataResource.json'
        with open(path, encoding='utf-8') as f:
            return dict_to_object(json.loads(f.read()))#读取json文件内容(字符串类型),通过json.loads()将字符串转换成字典

    S3:测试用例中通过调基类中方法来获取json文件中测试数据

    import unittest
    from src.pages.home.Login import Login
    from config import DriverConfigure
    
    #测试用例
    class Test1(unittest.TestCase):
    
    
    
        @classmethod
        def setUpClass(cls):
            driver = DriverConfigure.get_driver()
            cls.driver = driver
            json_obj =BaseJson.get_json()
            cls.json_obj =json_obj
    
    
    
    
        def setUp(self):
            self.login_page = Login(self.driver)
            self.user = self.json_obj['pm']['userName']#获取用户名测试数据
            self.pwd = self.json_obj['pm']['password']#获取密码测试数据
    
    
        def test_a_login_in(self):
            # 登录
            self.login_page.login_in(self.user, self.pwd)
    
           
    
        def tearDown(self):
            pass
    
        @classmethod
        def tearDownClass(cls):
            cls.driver.quit()
    
    if __name__ == '__main__':
        unittest.main()

    这样就可以实现测试数据和脚本的分离啦!

  • 相关阅读:
    (find) nyoj5-Binary String Matching
    (replace find)nyoj113-字符串替换
    (去重 sort)nyoj8-一种排序
    (模拟 打好基础) nyoj1363-计划日
    一种颜色怎么搭配
    动态识别类型
    swift与OC混合编程
    IOS动画效果
    NSAlert
    NSButton文本颜色设置和Action两种状态行为
  • 原文地址:https://www.cnblogs.com/ZoeLiang/p/10552940.html
Copyright © 2020-2023  润新知