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

# 方法2:获取单元格的值,需要数据的时候根据单元格行列值进行取值,只使用数据较少的时候,不推荐
# 每次需要数据的时候再从磁盘读取--到内存--到CPU执行,
# 运行速度:磁盘<内存<CPU,造成CPU等待,浪费资源

#1. get_data2.py
from openpyxl import load_workbook


class DoExcel:
    def __init__(self, file, sheet):
        self.file = file
        self.sheet = sheet
        self.sheet_obj = load_workbook(self.file)[self.sheet]

    def get_data(self, i, j):
        return self.sheet_obj.cell(i, j).value





# 2. class_test2.py
import unittest
from API_AUTO.tools.http_request import HttpRequest


class TestLogin(unittest.TestCase):
    def setUp(self):
        print("sart testing...")

    def tearDown(self):
        print("case done.")

    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("there is an error in the case {}".format(e))
            raise e


# 3. run.py
# 测试套件
import unittest
from para_2.get_data2 import DoExcel
from para_2.class_test2 import TestLogin
import HTMLTestRunner

suite = unittest.TestSuite()
case_data = DoExcel("data_2.xlsx", "sh2")
for i in range(1, 6):
    suite.addTest(TestLogin("test_api", case_data.get_data(i, 1), case_data.get_data(i, 2),
                            eval(case_data.get_data(i, 3)), case_data.get_data(i, 4)))
with open("login_2.html", "wb") as file:
    runner = HTMLTestRunner.HTMLTestRunner(stream=file,
                                           verbosity=2,
                                           title="登录2测试报告",
                                           description="加油,你只要坚持今天就是成功")
    runner.run(suite)

  

表格测试数据如图:

猜你喜欢

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