本文共 4416 字,大约阅读时间需要 14 分钟。
在开始编写测试脚本之前,我们需要确保已经安装了所有必要的库。以下是安装步骤:
pip install requestspip install xlrdpip install json
对于使用PyCharm的开发者来说,可以通过以下命令完成安装:
pip install requests --userpip install xlrd --userpip install json --user
我们将遵循Page Object Model设计理念,创建六个不同的Python包,具体实现将根据项目需求进行调整。
首先,我们在base包中创建Base_Page.py文件。
import requestsclass BasePage: def method_post(self, url, params=None, data=None, headers=None, files=None): return requests.post(url=url, params=params, data=data, headers=headers, files=files) def method_get(self, url, params=None, data=None, headers=None, files=None): return requests.get(url=url, params=params, data=data, headers=headers, files=files) def method_put(self, url, params=None, data=None, headers=None, files=None): return requests.put(url=url, params=params, data=data, headers=headers, files=files) def method_delete(self, url, params=None, data=None, headers=None, files=None): return requests.delete(url=url, params=params, data=data, headers=headers, files=files) def requests_type(self, method, url, params=None, data=None, headers=None, files=None): if method.lower() == 'post': return self.method_post(url, params, data, headers, files) elif method.lower() == 'get': return self.method_get(url, params, data, headers, files) elif method.lower() == 'put': return requests.put(url=url, params=params, data=data, headers=headers, files=files) elif method.lower() == 'delete': return requests.delete(url=url, params=params, data=data, headers=headers, files=files)
接下来,我们在common包中创建commons.py文件。
import loggingimport timeimport xlrd# 定义日志存储路径和HTML报告存储路径log_path = r'D:\PycharmProjects\自动化接口测试\report\logs'report_html = r'D:\PycharmProjects\自动化接口测试\report\html'class Common: # 封装日志方法 def get_logs(self, path=log_path): import logging logs = logging.getLogger() logs.setLevel(logging.DEBUG) # 生成日志文件路径 path = f'{path}/{time.strftime("%Y-%m-%d-%H-%M-%S")}.log' write_file = logging.FileHandler(path, 'a+', encoding='utf-8') write_file.setLevel(logging.DEBUG) # 设置日志格式 set_logs = logging.Formatter('%(asctime)s - %(filename)s - %(funcName)s - %(levelname)s - %(message)s') write_file.setFormatter(set_logs) # 添加到PyCharm的控制台 pycharm_text = logging.StreamHandler() pycharm_text.setFormatter(set_logs) logs.addHandler(write_file) logs.addHandler(pycharm_text) return logs # 封装读取Excel表格方法 def ReadExcelTypeDict(self, file_name, path=read_xlrd): path = f'{path}/{file_name}' import xlrd work_book = xlrd.open_workbook(path) sheets = work_book.sheet_names() DatasList = [] for sheet in sheets: sheets = work_book.sheet_by_name(sheet) nrows = sheets.nrows for i in range(nrows): values = sheets.row_values(i) DatasList.append(values) title_list = DatasList[0] content_list = DatasList[1:] new_list = [] for content in content_list: dic = {} for i in range(len(content)): dic[title_list[i]] = content[i] new_list.append(dic) return new_list 在case包中创建test_login.py文件。
import unittestfrom ddt import ddtfrom 自动化接口测试.base.Base_Page import BasePagefrom 自动化接口测试.common.commons import Commonclass TestLogin(unittest.TestCase): @classmethod def setUpClass(cls): cls.logs = Common().get_logs() cls.logs.debug('开始写入接口自动化测试用例') @classmethod def tearDownClass(cls): cls.logs.debug('自动化接口用例结束') def setUp(self): self.logs.debug('开始本条接口用例') def tearDown(self): self.logs.debug('结束本条用例') @ddt.data(*r) def test_logins(self, pars): import json dic = json.loads(pars['body参数值']) url = pars['接口地址'] yuqi = pars['预期结果'] fs = pars['请求方式'] result = BasePage().requests_type(method=fs, url=url, data=dic) self.assertEqual(result.text, yuqi) 在主模块中执行测试用例,并生成测试报告。
if __name__ == '__main__': loader = unittest.TestLoader().loadTestsFromTestCase(TestLogin) suite = unittest.TestSuite([loader]) Common().GetHtmlResult(suite, '登录测试用例')
希望以上内容能对您有所帮助!如果需要进一步的修改或优化,请随时告诉我!
转载地址:http://cgofk.baihongyu.com/