赞
踩
pytest.param:在 pytest.mark.parametrize 中可以作为一个指定的参数进行调用
获取数据库(网页端)数据,通过pytest.param包装成数据包用于pytest.mark.parametrize 中实现数据驱动调用。
import os import pytest import json from json import decoder # from common.basic_module.Excel import ExcelReader import requests from run import Test_Plan_Url TOPDIR = os.path.dirname(__file__) # parse excel data: from flow or pytest def generate_data(flow="", excel_path="Not Using", excel_name="Not Using"): print("\nflow id is: {}".format(flow)) test_data = [] if flow: response = requests.get(Test_Plan_Url + "=" + flow) if response.json()['success']: cases = response.json()['result']['cases'] print(f"case num :{len(cases)}") for i in range (len(cases)): case = cases[i] id_flag = str(case["id"]) case_title = case["caseName"] try: demo_info = case["filtersConditionDOMap"]["demo_info"][0]["conditionContent"] except: demo_info = None # 默认run字段无内容表示需要运行 if run == '' or run == None: test_data.append(pytest.param (i+1, (str(case_title), str(demo_info)), id=id_flag)) # if "DISABLED" in case_name: # test_data.append([i+1, pytest.param((str(case_type), str(case_name), run_case), marks=pytest.mark.xfail), id_flag]) # else: # test_data.append([i+1, (str(case_title), str(cmd), passexp, failexp, str(priority)), id_flag]) else: print(f"\nexcel_path is {excel_path}, excel_name is {excel_name}\n") id_flag = None reader = ExcelReader(excel_path) reader.set_sheet(excel_name) start_line = 2 for i in range(start_line,reader.rows): row_list = [] for row in reader.sheet[i]: row_list.append(row.value) test_data.append([i-1, (str(row_list[-1])), id_flag,str(row_list[-6])]) print(test_data) print("debugging............\n") print(type(test_data)) # execlcase顺序(导入顺序)和flow中id是对应的,但是flow传过来的case无序,需要按照case_id排序.为了处理有先后顺序的case sorted_test_data = sorted(test_data, key=(lambda x: x[-1])) for line in sorted_test_data: print(line) return sorted_test_data
测试函数中使用如下:
@pytest.mark.parametrize("num_id, case_info", generate_data(FLOW_TEST_ID))
def test_qemu(self, num_id, case_info):
demo_info = case_info[1]
pass
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。