zoukankan      html  css  js  c++  java
  • 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()

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

  • 相关阅读:
    C语言输出颜色
    嵌入式Linux串口编程简介
    推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
    嵌入式串口打印信息重定向到当前终端界面
    C、C++、boost、Qt在嵌入式系统开发中的使用
    LInux下Posix的传统线程示例
    Linux用C语言模拟‘ls‘命令
    关于Linux目录访问函数总结
    Inter内部指令--AVX编程基础
    SPECCPU2006测试(456测试小记)
  • 原文地址:https://www.cnblogs.com/ZoeLiang/p/10552940.html
Copyright © 2011-2022 走看看