)
方式一通过JMeter实现接口测试手工测试自动化方式二通过pythonrequest实现接口测试手工测试自动化测试属于不同方式而已都能实现接口测试。如何通过python代码实现接口手工自动化实战具体如下第一步安装依赖包通过python代码实现接口测试首先需要安装依赖包requests实现http或https请求parameterized实现参数化pymysql连接数据库安装方式命令行安装pip install 包名或者打开pycharm-file-setting-选择需要的包安装HTMLTestRunner下载HTMLTestRunner包拷贝到lib目录下搭建框架框架样式如下projectName #项目名称├── api #封装接口类├── data #存放测试数据├── scripts #定义测试用例脚本类├── lib #存放第三方库如HTMLTestRunner生成报告类├── report #存放生成的测试报告├── log #存放日志记录文件├── app #全局变量日志初始函数├── run_suite.py #测试套件执行测试主函数└── utils.py #定义工具类第一步日志初始函数日志函数的编写有日志那么测试记录都有方便查找问题。放入app.py文件中全局变量也放在此处importloggingfromloggingimporthandlersimportos,time# 全局变量当前文件的绝对路径、urlBASE_DIRos.path.dirname(os.path.abspath(__file__))BASE_URLhttps://test.test.comdefinit_log_config():# 创建日志器和设置日志级别loggerlogging.getLogger()logger.setLevel(logging.INFO)# 创建日志处理器文件和控制台c_handlerlogging.StreamHandler()c_handler.setLevel(logging.INFO)# 分隔符os.sep#logfile BASE_DIR log os.sep log{}.log.format(%Y%M%D %h%m%s)logfileBASE_DIR/logos.seplog.logf_handlerlogging.handlers.TimedRotatingFileHandler(logfile,whenM,interval5,backupCount3,encodingutf-8)# 创建格式器fmt%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)sformattorlogging.Formatter(fmt)# 将格式器加到处理器中c_handler.setFormatter(formattor)f_handler.setFormatter(formattor)# 将处理器加到日志器中logger.addHandler(c_handler)logger.addHandler(f_handler)日志函数的调用放到api接口封装包的__init__.py文件中每次执行测试套件都需要条用接口自动执行日志文件fromappimportinit_log_configimportlogging init_log_config()第二步编写测试脚本封装接口按照模块封装接口如登陆模块、报备模块、查询模块按文件单独存放创建接口类包括初始化接口url方法获取两个接口的方法包括请求参数、响应代码地址api包中loginAPI.py文件中#第一步导包包括全局变量、request实现http请求importappimportrequests#第二步创建登陆接口类classloginAPI():#第三步初始化url接口地址这个登陆包括两个接口一个获取账号一个选择账号登陆def__init__(self):self.getLogin01_urlyxf_p01.app.BASE_URL/iCloud-rest/channel-manager/authentication/accountself.getLogin02_urlyxf_p01.app.BASE_URL/iCloud-rest/channel-manager/authentication/form#第四步封装登陆接口一先获取账号defgetLoginAccout(self,session,username,password):#接口参数data{username:username,password:password}#接口响应responsesession.post(self.getLogin01_url,jsondata)returnresponse#封装登陆接口二-选择账号后登陆步骤同上defgetLogin(self,session,tenantId,username,password,remember-metrue):pass编写测试脚本script中创建测试脚本类包括多个测试用例代码地址script包中login.py文件中#第一步导包包括日志、unittest、requests、接口类测试什么脚本使用相应的封装接口类importloggingimportunittestimportrequestsfromapi.loginAPIimportloginAPI#第二布定义测试类包括测试用例classlogin(unittest.TestCase):username13426251900username_error013426251900username_nullpassword123456password_error123133#第二步创建第一个方法接口实例化和创建http连接defsetUp(self)-None:#封装接口类实例化self.login_apiloginAPI()#session实例化self.sessionrequests.Session()#关闭连接deftearDown(self)-None:self.session.close()#第三步第一个用例成功获取账号deftest01_get_login_account_success(self):#1、定义正确的参数# data {username: self.username, password: self.password}#2、调用接口类中获取登陆账号方法获取响应responseself.login_api.getLoginAccout(self.session,self.username,self.password)#记录日志logging.info(login response {}.format(response.json()))#3、断言每一个断言self.assertEqual(200,response.status_code)self.assertEqual(200,response.json().get(code))self.assertEqual(获取账号列表,response.json().get(message))#第二个测试用例密码错误deftest02_get_login_account_psdError(self):#定义参数#调用登陆接口封装类的方法获取响应responseself.login_api.getLoginAccout(self.session,self.username,self.password_error)#日志logging.info(psd error login response {} .format(response.json()))#断言self.assertEqual(200,response.status_code)第三步编写测试套件函数测试执行的主函数所有测试用例执行运行此函数即可jenkins集成时执行就是此文件python run_suite.py。#第一步导包包括unittest、脚本类、公共类全局变量文件、测试报告importtimeimportunittestimportappfromscript.loginimportlogin#多个接口模块则导入多个封装接口类fromlib.HTMLTestRunnerimportHTMLTestRunner#第二步实例化测试套件测试套件中添加测试脚本类如有其他测试脚本继续添加suiteunittest.TestSuite()suite.addTest(unittest.makeSuite(login))#第三步报告存放路径和报告名称report_fileapp.BASE_DIR/report/report{}.html.format(time.strftime(%Y%m%d-%H%M%S))#第四步运行测试套件且写入测试报告withopen(report_file,wb)asf:runnerHTMLTestRunner(f,titletest-接口测试报告,descriptiontest)runner.run(suite)测试执行通过主函数run_suite.py执行测试用例编写玩一个测试用例脚本执行一次编写边调试测试报告html测试报告展示