单元测试-从表格获取测试数据(1)

# 方法1:把所有数据一次都读到字典中,方便后期处理,推荐使用
# 一次性读取所有数据,对内存的要求会高一些
# 1.get_data.py
from openpyxl import load_workbook


class DoExcel:
    def __init__(self, file, sheet):
        self.file = file
        self.sheet = sheet

    def get_data(self):
        # 打开工作簿
        wb = load_workbook(self.file)
        # 定位表单
        sheet = wb[self.sheet]
        # 把每一行的数据放到字典中,再把字典放在列表中
        case_data = []
        for i in range(1, sheet.max_row+1):
            sub_data = {}
            sub_data["url"] = sheet.cell(i, 1).value
            sub_data["method"] = sheet.cell(i, 2).value
            sub_data["data"] = eval(sheet.cell(i, 3).value)
            sub_data["expected"] = sheet.cell(i, 4).value
            case_data.append(sub_data)
        return case_data


if __name__ == '__main__':
    print(DoExcel("data_1.xlsx", "sh2").get_data())



# 2. class_test_1.py

import unittest
from API_AUTO.tools.http_request import HttpRequest


class TestLogin(unittest.TestCase):
    def setUp(self):
        print("开始执行测试用例")

    def tearDown(self):
        print("用例执行完毕")

    def __init__(self, methodName, url, method, data, expected):
        super(TestLogin, self).__init__(methodName)
        self.url = url
        self.method = method
        self.data = data
        self.expected = expected

    def test_api(self):
        res = HttpRequest().http_request(self.url, self.method, self.data)
        r = res.json()["info"]
        try:
            self.assertEqual(r, self.expected)
        except AssertionError as e:
            print("test_case's error is {}".format(e))
            raise e  # 处理异常后抛出去,才能被检测到用例失败了


if __name__ == '__main__':
    unittest.main()



# 3.run.py
# 测试套件
import unittest
import HTMLTestRunner
from class_test_1 import TestLogin
from get_data import DoExcel

suite = unittest.TestSuite()
data = DoExcel("data_1.xlsx", "sh2").get_data()
for item in data:
    suite.addTest(TestLogin("test_api", item["url"], item["method"], item["data"], item["expected"]))

with open("login_1.html", "wb") as file:
    runner = HTMLTestRunner.HTMLTestRunner(stream=file,
                                           verbosity=2,
                                           title="登录测试报告1",
                                           description="加油,胜利的曙光就在眼前")
    runner.run(suite)

 

表格的测试数据如图:

猜你喜欢

转载自www.cnblogs.com/come202011/p/12230840.html