参考链接
pytest hook: 定制pytest插件必备之pytest hook的执行顺序
pypi 打包: https://packaging.python.org/tutorials/packaging-projects/
课程大纲
- 插件的加载方式
- 什么是hook
- Pytest 有哪些hook函数
- 如何改写hook函数
- 实战打包,发布
代码参考
"""
__author__ = 'hogwarts_xixi'
__time__ = '2021/3/1 8:17 下午'
"""
from typing import List
import pytest
import yaml
def pytest_collection_modifyitems(session, config, items:List):
for item in items:
# item.name 用例的名字
item.name = item.name.encode('utf-8').decode('unicode-escape')
# item.nodeid 用例的路径
item._nodeid = item.nodeid.encode('utf-8').decode('unicode-escape')
if 'login' in item.nodeid:
item.add_marker(pytest.mark.login)
items.reverse()
# 添加一个命令行参数
def pytest_addoption(parser):
mygroup = parser.getgroup("hogwarts") #group 将下面所有的 option都展示在这个group下。
mygroup.addoption("--env", #注册一个命令行选项
default='test', # 参数的默认值
dest='env', # 存储的变量
help='set your run env' # 帮助提示 参数的描述信息
)
@pytest.fixture(scope='session')
def cmdoption(request):
env = request.config.getoption("--env", default='test')
if env == 'test':
print("test 环境")
datapath = "datas/test/datas.yml"
elif env == 'dev':
print("开发 环境")
datapath = "datas/dev/datas.yml"
with open(datapath) as f:
datas = yaml.safe_load(f)
return env,datas
打包
必须要有代码和setup.py 文件
setup.py 是一个构建工具
打包需要两个工具
-
wheel, setuptools
-
setup.py 文件
"""
__author__ = 'hogwarts_xixi'
__time__ = '2021/3/1 8:57 下午'
"""
from setuptools import setup
setup(
name='pytest_encode',
url='https://github.com/xxx/pytest-encode',
version='1.0',
author="xixi",
author_email='418974188@qq.com',
description='set your encoding and logger',
long_description='Show Chinese for your mark.parametrize(). Define logger variable for getting your log',
classifiers=[# 分类索引 ,pip 对所属包的分类
'Framework :: Pytest',
'Programming Language :: Python',
'Topic :: Software Development :: Testing',
'Programming Language :: Python :: 3.8',
],
license='proprietary',
packages=['pytest_encode'],
keywords=[
'pytest', 'py.test', 'pytest_encode',
],
# 需要安装的依赖
install_requires=[
'pytest'
],
# 入口模块 或者入口函数
entry_points={
'pytest11': [
'pytest-encode = pytest_encode',
]
},
zip_safe=False
)
- 打包命令:
python setup.py sdist bdist_wheel
上面的是源码包,下面的是whl包,可以通过pip install 进行安装
发布:
代码参考
https://github.com/ceshiren/HogwartsLG4
课后作业
- 自己编写一个插件
- 创建一个日志的实例,定义好日志的格式,在测试用例中添加一些日志输出,输出日志到文件中
- 设置编码格式
- 打包