接口测试
结构说明
- excel 用于存放接口测试的测试用例相关信息
- read_data.py 用于读取excel 中存放的测试用例,并封装成列表
- wn.py 测试用例的执行,并断言等
excel
- 本次接口测试只用到了 url(路径)、params(请求参数)、except_result(预期结果)
read_data.py
-
引入 xlrd 模块读取 excel 文件中对应的"修改"表中的数据,封装为列表并返回
import xlrd class Excel: def get_datas(self): xl = xlrd.open_workbook(r"data.xls") sheet = xl.sheet_by_name("修改") items = sheet.row_values(0) datas = [] for nrow in range(1,sheet.nrows): data = dict() values = sheet.row_values(nrow) for ncol in range(0,len(items)): data[items[ncol]]=values[ncol] datas.append(data) return datas
wn.py
-
引入 requests 模块进行接口测试,
-
引入 ddt 实现单个 test_add 执行多个用例,输出多个测试报告。
- 没有采用 ddt 时:
- 采用 ddt 时:
- 没有采用 ddt 时:
-
引入 HTMLTestRunner 实现测试报告输出 html 文档
import requests import ddt,unittest,json,HTMLTestRunner from read_data import Excel excel = Excel() @ddt.ddt class wn(unittest.TestCase): @classmethod def setUpClass(cls): #登陆初始化 params = {"userName":"user000","userPass":"pass123","checkcode":"0000"} url = "http://xxxx/xxx/log/userLogin" cls.session = requests.session() rsp = cls.session.get(url,params=params) print(rsp.text) # 修改测试用例执行 @ddt.data(*excel.get_datas()) def test_add(self,testCase): params = json.loads(testCase["params"]) # print(params) rsp = self.session.get(url=testCase["url"], params=params) self.assertEqual(testCase["except_result"],rsp.text) self.debug() if __name__ == '__main__': suite = unittest.TestSuite() suite.addTests(unittest.TestLoader().loadTestsFromName("wnboss.WNBoss")) with open("testReport.html","wb") as f: runner = HTMLTestRunner.HTMLTestRunner(stream=f,verbosity=3,title="xxxx接口测试报告") runner.run(suite)