- Il existe actuellement deux frameworks de tests purs, pytest et unittest
- unittest devrait être largement connu, et c'est aussi un ancien framework. Beaucoup de gens l'utilisent pour l'automatisation, que ce soit l'interface utilisateur ou l'interface
- pytest est un autre cadre de test unitaire plus avancé et utile développé sur la base de unittest
Pourquoi utiliser Pytest
Selon le site officiel de pytest, il a les caractéristiques suivantes :
- Très facile à utiliser, facile à démarrer, riche en documentation, et il y a de nombreux exemples dans la documentation pour référence
- Capable de supporter des tests unitaires simples et des tests fonctionnels complexes
- Prise en charge du paramétrage
- Lors de l'exécution du test, certains tests peuvent être ignorés (sauter), ou certains cas d'échec attendus peuvent être marqués comme échec
- Prise en charge des cas d'échec d'exécution répétée (réexécution)
- Prend en charge l'exécution de cas de test écrits par nez, unittest
- Peut générer un rapport html
- Outil d'intégration pratique et continu Jenkins Integration
- Certains cas d'utilisation peuvent être pris en charge
- Possède de nombreux plug-ins tiers et peut être personnalisé
Installer pytest
cmd exécuter
pip install -U pytest
pip3 install pytest -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
afficher la version
pytest --version
le code
def func(x):
return x + 1
def test_answer():
assert func(3) == 5
class TestClass:
def test_one(self):
x = "this"
assert "h" in x
def test_two(self):
x = "hello"
assert hasattr(x, "check")
points de connaissance
- Si seul pytest est exécuté, il recherchera le fichier test_*.py ou *_test.py dans le répertoire courant et ses sous-répertoires. Après avoir trouvé le fichier, recherchez la fonction commençant par test dans le fichier et exécutez-la
- Si vous ne voulez exécuter qu'un certain fichier, vous pouvez
-
pytest start.py
-
- Ajoutez -q pour afficher des résultats simples :
-
pytest -q start.py
-
Principes de conception des cas d'utilisation de Pytest
Lorsque vous écrivez des cas de test avec Pytest, assurez-vous de suivre les règles ci-dessous, sinon les cas de test qui ne sont pas conformes aux règles ne seront pas exécutés
- Les noms de fichiers commencent par les fichiers test_*.py et *_test.py
- fonctions commençant par test_
- Les classes commençant par Test ne peuvent pas contenir de méthodes __init__
- Méthodes dans les classes commençant par test_
- Tous les packages doivent avoir le fichier __init__.py
Pytest exécute les règles de cas d'utilisation
Notez que ce qui suit concerne l'exécution des commandes pytest dans cmd
1. Tous les cas d'utilisation dans un certain répertoire
pytest
2. Exécutez le cas d'utilisation sous un certain fichier py
pytest 脚本名称.py
3. Exécutez une fonction dans le module start.py, ou une classe, ou une méthode dans une classe
Vous pouvez ajouter v ou ne pas ajouter -v, si vous ajoutez -v, les informations imprimées seront plus détaillées
pytest -v 08_mark.py::TestClass::test_method
pytest 08_mark.py::TestClass::test_method
pytest start.py::test_answer
4. Exécutez le module start.py pour tester une méthode dans la classe
pytest start.py::TestClass::test_two
5. Expression de la marque -m (explication suivante)
pytest -m login
exécutera tous les tests décorés avec le décorateur @pytest.mark.login, et nous développerons le marquage plus tard
6. -q impression simple, n'imprime que le résultat d'exécution du cas de test
pytest -q start.py
7. -s imprimer en détail
pytest -s start.py
8. -x Arrête le test lorsqu'une erreur est rencontrée
pytest start.py -x
9. --maxfail=num, lorsque le nombre d'erreurs de cas d'utilisation atteint le nombre spécifié, arrête le test
pytest start.py --maxfail=1
10. -k correspond au nom du cas d'utilisation
Exécute tous les cas de test dont le nom de cas de test contient http
pytest -s -k http start.py
11. -k Exclure certains cas d'utilisation en fonction du nom du cas d'utilisation
pytest -s -k "not http" start.py
12. -k correspond à différents noms de cas d'utilisation en même temps
pytest -s -k "method or weibo" start.py
Pycharm exécute Pytest
Nous écrivons généralement du code dans Pycharm, comment pouvons-nous utiliser cmd pour exécuter les cas d'utilisation tout le temps, voyons maintenant comment exécuter Pytest dans Pycharm
- Tout d'abord, nous allons d'abord dans les paramètres pour définir le cadre de test unitaire comme Pytest
- S'il s'agit de nosetests, le clic droit pour exécuter est exécuté par un script python
- Si unittest est défini, il s'exécutera avec le framework unittest