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()

 

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

 

posted @ 2019-03-18 16:32  丹姐blog  阅读(432)  评论(0编辑  收藏  举报