当前位置:网站首页>Pytest Collection (2) - mode de fonctionnement pytest
Pytest Collection (2) - mode de fonctionnement pytest
2022-07-01 21:36:00 【Fais - le. Kiss】
Un.、Exécution en mode ligne de commande
1、Exécution en mode ligne de commandepytest
Le Bureau de l'ordinateur crée untest_sample.pyNouveau fichier pour,Contient des fonctions et des cas d'essai.
# content of test_sample.py
def func(x):
return x + 1
def test_answer():
assert func(3) == 5Ouvre.test_sample.pyDans le dossier,cmdCommande d'entrée de fenêtre:pytest.pytestTrouve tout dans le répertoire courant et ses sous - répertoires pourtest_*.pyOu*_test.pyDocumentation,Puis exécutez dans le fichiertestFonction de démarrage.Voir détailspytestRègles de collecte des cas d'essai.


Microsoft Windows [Version 10.0.19044.1766]
(c) Microsoft Corporation.Tous droits réservés.C:\Users\057776\Desktop>pytest
==================================== test session starts ====================================
platform win32 -- Python 3.8.8, pytest-6.2.3, py-1.10.0, pluggy-0.13.1
rootdir: C:\Users\057776\Desktop
plugins: html-3.1.1, metadata-1.11.0, rerunfailures-9.1.1, assume-2.2.0, requests-mock-1.7.0
collected 1 itemtest_sample.py F [100%]
====================================== FAILURES ======================================
_______________________________________ test_answer _______________________________________def test_answer():
> assert func(3) == 5
E assert 4 == 5
E + where 4 = func(3)test_sample.py:18: AssertionError
================================= short test summary info =================================
FAILED test_sample.py::test_answer - assert 4 == 5
==================================== 1 failed in 0.70s ====================================C:\Users\057776\Desktop>
Description:
- collected 1 item:pytest En cours d'exécution, un total de 1Cas d'essai.
- test_sample.py F:Marqué commeF Est que le résultat du test a échoué .
- [100%] : Indique l'état d'avancement global de l'exécution de tous les cas d'essai .
- FAILURES: Sortie d'un message d'erreur détaillé , Aidez - nous à analyser la raison du test ,Nous pouvons voir"assert func(3) == 5"Cette déclaration a mal tourné,La raison de l'erreur estfunc(3)=4, Et nous avons affirmé func(3) égal à 5.
2、pytest Exécuter le marqueur de résultat
- . Point No.,Indique que le cas d'utilisation passe
- F Indique un échec Failure
- E Indique une exception dans le cas d'utilisation Error
- S Indique que le cas d'utilisation a été omis Skip
- x En minuscules x Indique un échec attendu xfail
- X En majuscules X Indique un échec attendu ,Mais ça a marché.
2.、PycharmEn cours
1、TerminalFonctionnement dans le terminal
pycharmLa liste des projets est la suivante,Sélectionnertest_sample.pyDocumentation,Clic droit de la sourisOpen in | Open in Terminal,En mode ligne de commande, saisissezpytest

Microsoft Windows [Version 10.0.19044.1766]
(c) Microsoft Corporation.Tous droits réservés.(venv) C:\Users\057776\PycharmProjects\pytest-demo\testcases>pytest
================================== test session starts ===================================
platform win32 -- Python 3.8.8, pytest-6.2.3, py-1.10.0, pluggy-0.13.1
rootdir: C:\Users\057776\PycharmProjects\pytest-demo\testcases
plugins: html-3.1.1, metadata-1.11.0, rerunfailures-9.1.1, assume-2.2.0, requests-mock-1.7.0
collected 1 itemtest_sample.py F [100%]
===================================== FAILURES =====================================
______________________________________ test_answer ______________________________________def test_answer():
> assert func(3) == 5
E assert 4 == 5
E + where 4 = func(3)test_sample.py:18: AssertionError
================================ short test summary info ================================
FAILED test_sample.py::test_answer - assert 4 == 5
=================================== 1 failed in 0.60s ===================================(venv) C:\Users\057776\PycharmProjects\pytest-demo\testcases>
2、 Configurer l'exécuteur d'essai
Nous pouvons également choisir par défaut en configurant pytestDe la façon dontpyDocumentation.
File | Settings | Tools | Python Integrated Tools



3、pytest.main()Méthodes
pytest.main() La méthode peut servir d'entrée pour l'exécution des cas d'essai de nos projets d'essai automatisés ,En bas, on apytest.main()Donner des explications.
Modifier ci - dessustest_sample.pyLes documents sont les suivants:
import pytest
# content of test_sample.py
def func(x):
return x + 1
def test_answer():
assert func(3) == 5
if __name__ == '__main__':
pytest.main()
# pytest.main(['test_sample.py'])
# pytest.main(['-q','test_sample.py'])
Description:
- pytest.main() :Aucun paramètre, Tous les cas de test dans le répertoire courant sont recueillis , équivalent à l'entrée d'une commande en mode ligne de commande pytest.
- pytest.main(['test_sample.py']) :Un paramètre,Exécuter le fichier spécifiétest_sample.pyTous les cas d'essai pour.
- pytest.main(['-q','test_sample.py']) :Deux paramètres,Paramètres-qIndique le mode silencieux, Ne pas exporter d'informations environnementales.
(1)pytest.main()Analyse des sources
def main(
args: Optional[Union[List[str], py.path.local]] = None,
plugins: Optional[Sequence[Union[str, _PluggyPlugin]]] = None,
) -> Union[int, ExitCode]:
"""Perform an in-process test run.
:param args: List of command line arguments.
:param plugins: List of plugin objects to be auto-registered during initialization.
:returns: An exit code.
"""
try:
try:
config = _prepareconfig(args, plugins)
except ConftestImportFailure as e:
exc_info = ExceptionInfo(e.excinfo)
tw = TerminalWriter(sys.stderr)
tw.line(f"ImportError while loading conftest '{e.path}'.", red=True)
exc_info.traceback = exc_info.traceback.filter(
filter_traceback_for_conftest_import_failure
)
exc_repr = (
exc_info.getrepr(style="short", chain=False)
if exc_info.traceback
else exc_info.exconly()
)
formatted_tb = str(exc_repr)
for line in formatted_tb.splitlines():
tw.line(line.rstrip(), red=True)
return ExitCode.USAGE_ERROR
else:
try:
ret: Union[ExitCode, int] = config.hook.pytest_cmdline_main(
config=config
)
try:
return ExitCode(ret)
except ValueError:
return ret
finally:
config._ensure_unconfigure()
except UsageError as e:
tw = TerminalWriter(sys.stderr)
for msg in e.args:
tw.line(f"ERROR: {msg}\n", red=True)
return ExitCode.USAGE_ERRORJe vois., main() .La fonction accepte deux arguments:
- args :Liste des paramètres de la ligne de commande, Les mêmes paramètres que l'exécution en mode ligne de commande ,Dans la Liste List Avec une chaîne str Forme, Paramètres multiples “,” Séparation, Il est également possible de passer au test caseChemin vers.
- plugins : Pour les paramètres du plug - in , Liste des objets plug - in à enregistrer automatiquement lors de l'initialisation .
(2).pytest_cacheDossiers

pytest Une fois que tous les cas de test ont été exécutés dans le cadre de test, ils sont générés dans le répertoire courant .pytest_cache , Il contient des informations sur la dernière exécution du cas d'utilisation .
reference:
边栏推荐
猜你喜欢

柒微自动发卡系统源码

PMP证书真的有用吗?

Spark面试题
![[multithreading] realize the singleton mode (hungry and lazy) realize the thread safe singleton mode (double validation lock)](/img/bf/524e78473625a31c024783ccec8d46.png)
[multithreading] realize the singleton mode (hungry and lazy) realize the thread safe singleton mode (double validation lock)

Big factories are wolves, small factories are dogs?

基于YOLOv5的口罩佩戴检测方法

九章云极DataCanvas公司蝉联中国机器学习平台市场TOP 3

EMC-电路保护器件-防浪涌及冲击电流用

leetcode刷题:栈与队列04(删除字符串中的所有相邻重复项)

十三届蓝桥杯B组国赛
随机推荐
能升职加薪?PMP证书含金量浅析
How can I know if I want to get the preferential link of stock account opening? Is it safe to open an account online?
杰理之、产线装配环节【篇】
leetcode刷题:二叉树03(二叉树的后序遍历)
vscode的使用
面试题:MySQL的union all和union有什么区别、MySQL有哪几种join方式(阿里面试题)[通俗易懂]
leetcode刷题:栈与队列04(删除字符串中的所有相邻重复项)
喜马拉雅自研网关架构演进过程
MQ学习笔记
MySQL清空表数据
js数组拼接的四种方法[通俗易懂]
考虑关系的图卷积神经网络R-GCN的一些理解以及DGL官方代码的一些讲解
PMP与NPDP之间的区别是什么?
【mysql 07】GPG key retrieval failed: “Couldn‘t open file /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022“
idea中类中显示成员变量和方法
收藏:存储知识全面总结
【级联分类器训练参数】Training Haar Cascades
Accelera Systems Initiative是一个独立的非营利组织
新牛牛盲盒微信小程序源码_支持流量变现,带完整素材图片
NIO与传统IO的区别