python接口自動(dòng)化-pytest-插件開(kāi)發(fā)/打包發(fā)布

# -*- coding: utf-8 -*-
# @Time    : 2023/6/27 15:34
# @Author  : yanfa
# @user   : yanfa 
# @File    : test_pytest_for_develop_plugins.py
# @remark: Pytest 插件開(kāi)發(fā)、參數(shù)詳解、打包發(fā)布
""""""
import pytest

"""一、pytest編寫(xiě)插件1-修改默認(rèn)編碼
pytest_collection_modifyitems收集上來(lái)的測(cè)試用例實(shí)現(xiàn)定制化功能
解決問(wèn)題:
    1、自定義用例執(zhí)行順序
    2、解決編碼問(wèn)題(中文的測(cè)試用例名稱容易亂碼)
    3、自動(dòng)添加標(biāo)簽
示例:  測(cè)試用例收集完成時(shí),將收集的用例名name和用例標(biāo)識(shí)nodeid的中文信息顯示在控制臺(tái)上-一般放在項(xiàng)目根目錄的conftest.py
def pytest_collection_modifyitems(items):
    print("hook: 編碼處理開(kāi)始")
    for i in items:
        i.name=i.name.encode("utf-8").decode("unicode_escape")
        i._nodeid=i.nodeid.encode("utf-8").decode("unicode_escape")
    print("hook: 編碼處理結(jié)束")
"""
# 例子 配置見(jiàn)conftest.py,如果不處理會(huì)亂碼
# @pytest.mark.parametrize('name',['張三'])
# def test_encode(name):
#     print(f"name:{name}")
# 輸出
# ================ test session starts ======================
# platform darwin -- Python 3.9.6, pytest-7.3.1, pluggy-1.0.0
# rootdir: /Users/yanfa/PycharmProjects/hogwarts
# configfile: pytest.ini
# plugins: ordering-0.6, xdist-3.3.1
# collecting ...
# hook: 編碼處理開(kāi)始
# hook: 編碼處理結(jié)束
# collected 1 items

# thematic_courses/pytest_and_allure/pytest_L4/pytest_for_plugins/test_pytest_for_develop_plugins.py::test_encode[張三]
# hook: 前置處理
# hook: 執(zhí)行用例
# name:張三 PASSED
# hook: 后置處理

# =============== 1 passed in 0.01s =================

"""二、pytest編寫(xiě)插件2-添加命令行參數(shù)
代碼示例:
    def pytest_addoption(parser):
        # group 將下面所有的option都展示在這個(gè)group下,
        # 什么是group,pytest -h查看幫助文檔中,找到logging:,它下面又有 --log-level=LEVEL,那么這就是一個(gè)組
        mygroup = parser.getgroup("hogwarts") 
        group.addoption(
            '--env',        #注冊(cè)一個(gè)命令行選項(xiàng)
            default='test', #參數(shù)默認(rèn)值
            dest = 'env',   #存儲(chǔ)的變量,為屬性命令,可以使用option對(duì)象訪問(wèn)這個(gè)值
            help='set your run env' # 幫助信息,參數(shù)的描述信息
        )
    
    @pytest.fixture(scope='session'):
    def cmdoption(request):
        return request.config.getoption("--env")
查看是否注冊(cè)成功:點(diǎn)擊conftest.py右鍵open in terminal找到hogwarts
效果:
    hogwarts:
        --env=ENV             set your run env
"""
# 例子:邏輯見(jiàn)conftest.py,
# 直接執(zhí)行會(huì)取test文件默認(rèn)值,輸出('test', {'username': 152155555555, 'password': 123456})
# 命令行執(zhí)行:pytest --env=online xxx/xxx/.py 會(huì)取online文件值,輸出 ('online', {'username': 15266666666, 'password': 123456})
def test_addoption(cmdoption):
    print(cmdoption)


"""三、打包發(fā)布
1、打包發(fā)布到pypi
    發(fā)布到:www.pypi.org
    代碼上傳到:github
    
2、打包項(xiàng)目構(gòu)成
    源碼包、setup.py、測(cè)試包
    說(shuō)明文檔:www.pypi.org 點(diǎn)擊help,找到Basics下點(diǎn)擊How do I package and publish my code for PyPI?,點(diǎn)擊packaging tutorial

3、打包命令
依賴包安裝:
    pip install setuptools python的包管理工具,負(fù)責(zé)安裝和發(fā)布,尤其是安裝擁有依賴關(guān)系的包
    pip install wheel 生成*.whl格式的安裝包,本質(zhì)上是一個(gè)壓縮包
打包命令:
    python setup.py sdist bdist_wheel
查找包:pip list |grep pytest_encode
例子:setup.py見(jiàn)https://ceshiren.com/t/topic/14156

4、發(fā)布至https://pypi.org/
見(jiàn)https://packaging.python.org/en/latest/tutorials/packaging-projects/
mac:
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade twine
python3 -m twine upload --repository testpypi dist/*
python3 -m pip install --index-url https://test.pypi.org/simple/ --no-deps example-package-YOUR-USERNAME-HERE
"""
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容