python+requests+unittest 搭建接口自动化测试框架(五)
每个接口用一个单独的测试文件 test01case.py
import os import sys sys.path.append(os.getcwd()) import unittest from common.configHttp import RunMain import paramunittest # paramunittest是unittest实现参数化的一个专门的模块,可以传入多组参数,自动生成多个用例 # 前面讲数据驱动的时候,用ddt可以解决多组数据传入,自动生成多个测试用例 import geturlParams import urllib.parse # import pythoncom import readExcel # pythoncom.CoInitialize() url = geturlParams.geturlParams().get_Url()# 调用我们的geturlParams获取我们拼接的URL login_xls = readExcel.readExcel().get_xls('userCase.xls', 'login') # [['login', '/login', 'name=xiaoming&pwd=1111', 'post']] @paramunittest.parametrized(*login_xls) class testUserLogin(unittest.TestCase): def setParameters(self, case_name, path, query, method): """ set params :param case_name: :param path :param query :param method :return: """ self.case_name = str(case_name) self.path = str(path) self.query = str(query) self.method = str(method) def description(self): """ test report description :return: """ self.case_name def setUp(self): """ :return: """ print(self.case_name+"测试开始前准备") def test01case(self): self.checkResult() def tearDown(self): print("测试结束,输出log完结\n\n") def checkResult(self):# 断言 """ check test result :return: """ url1 = "http://127.0.0.1:8888"+self.path+"?" new_url = url1 + self.query data1 = dict(urllib.parse.parse_qsl(self.query))# 将一个完整的URL中的name=&pwd=转换为{'name':'xxx','pwd':'bbb'} info = RunMain().run_main(self.method, url, data1)# 根据Excel中的method调用run_main来进行requests请求,并拿到响应 if self.case_name == 'login':# 如果case_name是login,说明合法返回的code应该为200 self.assertEqual(info['code'], 200) if self.case_name == 'login_error':# 同上 self.assertEqual(info['code'], -1) if self.case_name == 'login_null':# 同上 self.assertEqual(info['code'], 10001) if __name__ == '__main__': unittest.main()
把url封装为一个类:
geturlParams.py
import os import sys sys.path.append(os.getcwd()) from readConfig import ReadConfig class geturlParams:# 定义一个方法,将从配置文件中读取的进行拼接 def __init__(self): self.readconfig = ReadConfig() def get_Url(self): new_url = self.readconfig.get_http('scheme') + '://' + self.readconfig.get_http('baseurl') + ':8888' + '/login' #logger.info('new_url'+new_url) return new_url if __name__ == '__main__':# 验证拼接后的正确性 print(geturlParams().get_Url())