Python

您所在的位置:网站首页 python框架怎么搭建 Python

Python

2023-07-26 15:59| 来源: 网络整理| 查看: 265

框架搭建/框架设计,说白了就是怎么组织代码,或者就是说怎么创建包,模块。

需要组织或者搭建的代码包有哪些呢?

自动化测试的用例放在哪儿?入口 main函数,收集用例放在哪?测试数据,又该放在哪?测试报告放在哪?配置文件放在哪里?日志文件放在哪里?excel操作托管提交到公司的代码库(git/github) 框架搭建说明:

1.项目就是一个目录,只是在这个目录内会放很多的文件,不是包

2.创建run.py,文件名可自定义,用于收集用例,运行用例,生成测试报告

import unittest import unittestreport # 收集用例,tests用例所在的包 suite = unittest.defaultTestLoader.discover('cases') # 运行用例 # runner = unittest.TextTestRunner() # runner.run(suite) # 生成测试报告 runner = unittestreport.TestRunner(suite, tester='困困') runner.run()

3.reports/,存放所有的测试报告

4.data/,存放所有的测试数据,cases.xlsx内容如下:

5.common/,存放所有的通用模块。common是通用的,其他的目录或多或少是和项目有关系的。

换句话说当你换一个项目是,common可以原封不动的复制到新项目中去使用;其他的是需要修改部分内容的。

excel.py-读取excel内数据

from openpyxl import load_workbook def read_excel(file, sheet_name): # 通过文件得到一个工作薄,参数是文件名,如果有路径要写绝对路径 wb = load_workbook(file) # 获取sheet表格 sheet = wb[sheet_name] # 获取sheet中所有的数据 data = list(sheet.values) # 将列表还转化为字典 # dict_list = [] # for i in range(1, len(data)): # dict_list.append(dict(zip(data[0], data[i]))) # return dict_list titles = data[0] rows = [dict(zip(titles, row)) for row in data[1:]] return rows

logger.py-生成日志文件

from loguru import logger def get_logger(file): # 将日志保存到文件中 logger.add(sink=file, encoding='utf-8', # level='INFO', # rotation='100 MB', ) return logger my_log = get_logger('log/demo.log')

yaml_read.py读取yaml配置文件

import yaml # 读取yaml文件 def read_yaml(filename): with open(filename, encoding='utf-8') as f: data = yaml.safe_load(f) return data file = r'..\config\config.yaml' data = read_yaml(file) print(data)

6.tests/,存放测试用例

test_login.py-测试用例

import unittest from funcs import login from common.excel import read_excel from ddt import ddt, data from common.logger import my_log # r :\不转义 file_path = r'D:\PycharmProjects\框架搭建\data\cases.xlsx' excel_data = read_excel(file_path, 'Sheet1') @ddt class TestLogin(unittest.TestCase): @data(*excel_data) def test_login(self, row): my_log.info('测试用例正在执行。。。') # row表示每次从data这个list当住取出一个数据 # 代表一组测试数据,相当于for row in data # 但不同点在于:会自动生成一个新的测试用例方法test_login_1() params_str = row['data'] params = eval(params_str) username = params['username'] pwd = params['pwd'] expected = eval(row['expected']) actual = login(username, pwd) self.assertEqual(expected, actual)

7.setting/,存放配置文件

8.log/,存放日志文件

框架的目的便于维护,方便查找。

扩展:

面试题中经常遇到:你的自动化测试框架是怎么搭建的?你的自动化测试框架包含了什么内容?

你们公司自动化怎么做的?

-分层设计,有层次,方便维护。

-每个包/模块分别处理什么问题?

run.py 收集用例 运行用例 生成测试报告测试用例 tests/测试报告存在哪里?reports;log存在哪里?log/ ;测试数据存在哪?cases/common/ 通用模块,可以被其他项目使用,和项目没有关系

-框架到底解决了哪些自动化测试问题?

数据驱动 ddt数据断言 assert数据提取 动态参数替换



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3