unittest(13)- 从配置文件中读取测试数据
2024-08-31 10:48:16
case.config
# 1. http_request.py import requests class HttpRequest: def http_request(self, url, method, data=None, cookie=None): try: if method.upper() == "GET": res = requests.get(url, data, cookies=cookie) elif method.upper() == "POST": res = requests.post(url, data, cookies=cookie) else: print("请输入正确的参数") except Exception as e: print("请求报错了:{}".format(e)) raise e return res
# 2.get_data7.py from openpyxl import load_workbook from day_20191202.config_data_depart.read_config import ReadConfig class DoExcel: def __init__(self, file, sheet): self.file = file self.sheet = sheet def get_data(self, mode="all"): mode = ReadConfig().get_config("case.config", "MODE", "mode") wb = load_workbook(self.file) sheet = wb[self.sheet] case_data = [] for i in range(2, sheet.max_row+1): sub_data = {} sub_data["case_id"] = sheet.cell(i, 1).value sub_data["url"] = sheet.cell(i, 2).value sub_data["method"] = sheet.cell(i, 3).value sub_data["data"] = eval(sheet.cell(i, 4).value) sub_data["expected"] = sheet.cell(i, 5).value case_data.append(sub_data) if mode == "all": final_data = case_data else: # [1, 2, 5] final_data = [] for test_data in case_data: # 遍历每一条测试数据,如果测试数据的id在传入的列表中,就把这条数据加到final_data if test_data["case_id"] in eval(mode): final_data.append(test_data) return final_data if __name__ == "__main__": case_data = DoExcel("data_7.xlsx", "sh2").get_data() print(case_data)
# 3. read_config.py import configparser class ReadConfig: def get_config(self, file, section, option): cf = configparser.ConfigParser() cf.read(file, encoding="utf-8") return cf.get(section, option) if __name__ == "__main__": r = ReadConfig().get_config("case.config", "MODE", "mode") print(r)
# 4. test_login.py import unittest from API_AUTO.tools.http_request import HttpRequest from ddt import ddt, data, unpack from day_20191202.config_data_depart.get_data7 import DoExcel from day_20191202.config_data_depart.read_config import ReadConfig # 自定义取某几条数据执行用例 # mode = ReadConfig().get_config("case.config", "MODE", "mode") test_data = DoExcel("data_7.xlsx", "sh2").get_data() # print(test_data) @ddt class TestLogin(unittest.TestCase): def setUp(self): print("start testing...") def tearDown(self): print("case done.") @data(*test_data) @unpack # 注意新的表格数据多了id,要用参数来接收case_id def test_api(self, case_id, url, method, data, expected): # print("url:", url) # print("method", method) # print("data_c", data) res = HttpRequest().http_request(url, method, data) r = res.json()["info"] try: self.assertEqual(r, expected) except AssertionError as e: print("there is an error in the case {}".format(e)) raise e if __name__ == '__main__': TestLogin().test_api()
# 5. run.py import unittest from day_20191202.config_data_depart.class_test_ddt import TestLogin import HTMLTestRunner suite = unittest.TestSuite() loader = unittest.TestLoader() suite.addTest(loader.loadTestsFromTestCase(TestLogin)) with open("login7.html", "wb") as file: runner = HTMLTestRunner.HTMLTestRunner(stream=file, verbosity=2, title="登录7测试报告", description="管住心情,就是胜利") runner.run(suite) # runner = unittest.TextTestRunner(verbosity=2) # runner.run(suite)
最新文章
- 如何在删除ibdata1和ib_logfile的情况下恢复MySQL数据库
- Apworks框架实战(四):使用Visual Studio开发面向经典分层架构的应用程序:从EasyMemo案例开始
- 程序集与反射技术(C#)
- 沃罗诺伊图(Voronoi Diagram,也称作Dirichlet tessellation,狄利克雷镶嵌)
- C#使用IrisSkin2.dll美化WinForm程序界面
- python中的popen和subprocess
- 第三篇 从EXCEL电子表格到数据库
- 使用gulp、yeoman、bower建站
- Codeforces Round #330 (Div. 2) B. Pasha and Phone 容斥定理
- 懒加载 lazy load
- 【iOS知识学习】_iOS沙盒机制
- R2:获取一个event_base
- HBase--DependentColumnFilter(参考例过滤器 )详解
- 非root启动80端口
- python 全栈开发,Day3
- [SDOI 2010]外星千足虫
- 灵雀云受邀加入VMware 创新网络,共同助力企业数字化进程
- 来源于知乎专栏:https://zhuanlan.zhihu.com/p/29619457
- 加密算法(对称加密)AES、DES (非对称加密)RSA、DSA
- Android.mk(4) 依赖:目标编程的模式