|
本帖最后由 zxdznb 于 2022-8-3 17:37 编辑
三、ddt读取文件
2.ddt读取excel文件
思路:先从excel文件中读取数据,然后再用ddt加载已读取的数据
第一步:读取excel
- # get_excel.py
- from openpyxl import load_workbook
- class ExcelData():
- def __init__(self, file="config.xlsx"):
- '''
- 初始化Excel对象
- '''
- self.file = file
- self.wb = load_workbook(self.file)
- def get_row_value(self, row, sheet_name="Sheet1"):
- '''
- 获取Excel中某一行的数据
- '''
- sh = self.wb[sheet_name]
- max_col = sh.max_column
- row_value = []
- for col in range(1, max_col+1):
- value = sh.cell(row, col).value
- row_value.append(value)
- return row_value
- def get_all_row(self, sheet_name="Sheet1"):
- '''
- 获取Excel中所有行的数据,并存放在列表中
- '''
- sh = self.wb[sheet_name]
- max_row = sh.max_row
- row_value = []
- for row in range(2, max_row+1):
- value = self.get_row_value(row)
- row_value.append(value)
- return row_value
- if __name__ == "__main__":
- excel = ExcelData()
- testdata = excel.get_all_row()
- print(testdata)
复制代码 第二步:使用ddt使用读取好的数据
- # get_ddt.py
- import requests
- import unittest
- from ddt import ddt, data, unpack, file_data
- from get_excel import ExcelData
- @ddt
- class SignTest(unittest.TestCase):
- # 从get_excel.py中读取测试数据
- excel = ExcelData()
- testdata = excel.get_all_row()
- @data(*testdata)
- def test_sign(self, datas):
- # 由于从excel中读取到的数据为列表形式,所以采用下标来提取各参数
- ID = datas[0]
- model = datas[1]
- title = datas[2]
- method = datas[3]
- url = datas[4]
- username = datas[5]
- pwd = datas[6]
- cpwd = datas[7]
- check = datas[8]
- body = {
- "username": username,
- "pwd": pwd,
- "cpwd": cpwd
- }
- self.sign_test(ID,model,title,url,method,body,check)
- def sign_test(self,ID,model,title,url,method,body,check):
- print("用例ID:", ID)
- print("模块:", model)
- print("用例标题:", title)
- response = requests.request(url=url, method=method, data=body).text
- try:
- # 通过断言,比较实际结果是否与预期结果一致
- # 由于从excel中读取到的check为str类型,所以response不用转换为dict,直接断言比较是否相等
- assert check == response
- print("测试通过")
- except Exception as e:
- print("测试失败")
- raise e
- if __name__ == "__main__":
- unittest.main()
复制代码 结果:
- 运行结果:
- 用例ID: 001
- 模块: 注册模块
- 用例标题: 正确的用户名和密码,注册成功
- .测试通过
- 用例ID: 002
- 模块: 注册模块
- 用例标题: 用户名长度小于6位,注册失败
- .测试通过
- OK
- ----------------------------------------------------------------------
- Ran 2 tests in 0.190s
- Process finished with exit code 0
复制代码
转载:python ddt模块的使用 - www.pu - 博客园 (cnblogs.com)
|
|