1 : Règles de nommage
2 : Pytest génère son propre rapport de test html
Prérequis : vous devez télécharger le module pytest-html (le module de rapport de test intégré de python )
pip installer pytest-html
Cas numéro un
pytest.main("module.py ") [exécuter le module spécifié , exécuter toutes les classes et tous les cas de test en commençant par test]
Générer un rapport
Cas 2
Rapport de sortie :
Cas trois :
Générer un rapport:
Instruction d'appel pytest
Rapport de sortie :
-x Quitter le test lorsqu'un scénario de test échoue
-s : affiche le contenu à imprimer
Générer un rapport:
3 : Comment fonctionne Pytest
4 : Lire le fichier xml
fichier xml
Module de code de développement :
Lire le module de données :
Tester le module de codes :
Générer un rapport:
Code d'implémentation :
#xml文件
<ento>
<add>
<add1>1</add1>
<add2>2</add2>
<denyu>3</denyu>
</add>
</ento>
#开发代码
class Clac():
def add(self,a,b):
return a + b
def jian(self,a,b):
return a - b
#读取数据
from xml.dom import minidom
class ReadXml():
def readxml(self,path,firsthod,secondnode):
root = minidom.parse(path)
firsthod = root.getElementsByTagName(firsthod)[0]
secondnode = firsthod.getElementsByTagName(secondnode)[0].firstChild.data
return secondnode
#测试代码
from readdata.readxml import ReadXml #获取数据
from assets.clac import Clac #引入开发代码
import pytest,allure,os
readxmlclass = ReadXml()
c = Clac()
aa = int(readxmlclass.readxml("../data/test.xml","add","add1"))
bb = int(readxmlclass.readxml("../data/test.xml","add","add2"))
cc = int(readxmlclass.readxml("../data/test.xml","add","denyu"))
class TestClass():
def test001(self):
result = c.add(int(aa),int(bb))
assert result == int(cc)
4.1 Lire le fichier csv
Module de code de développement :
Lire le module de données :
Tester le module de codes :
Générez un rapport de test :
Code d'implémentation :
#csv文件
10,20,30
#开发代码
class Clac():
def add(self,a,b):
return a + b
def jian(self,a,b):
return a - b
#读取数据
import csv
class CsvClass():
def csvclass(self):
item = []
c = csv.reader(open("../data/test.csv"))
for csv_i in c:
item.append(csv_i)
return item
r = CsvClass()
print(r.csvclass())
#测试代码
from readdata.redatacsv import CsvClass
from assets.clac import Clac
import pytest
r = CsvClass()
data = r.csvclass()
c = Clac()
class TestCsv():
def test001(self):
for item_i in data:
result = c.add(int(item_i[0]),int(item_i[1]))
assert result == int(item_i[2])
if __name__ == '__main__':
pytest.main(["-s","test_02.py","--html=./report123.html"])
5:allure
Vérifiez que l' allure est configurée avec succès
Ensuite, installez allure
pip installer allure-pytest
allure-pytest est un plugin pour Pytest , à travers lequel nous pouvons générer les données nécessaires à Allure pour générer des rapports de test
5.1 : Plusieurs fonctionnalités couramment utilisées par Allure
5.1.1:allure.fonctionnalité
@allure.feature # est utilisé pour décrire les exigences du produit testé
5.1.2:allure.histoire
@allure.story #Utilisé pour décrire le scénario utilisateur de la fonctionnalité , c'est-à-dire l'exigence de test
Cas
Implémenter la fonction de connexion de l'utilisateur, les scénarios sont le succès de la connexion et l'échec de la connexion
Affichage effet pytest et allure
Lire xml pour générer un rapport d'allure
Code de développement :
Lire les données :
Générer un rapport:
#xml文件
<ento>
<add>
<add1>1</add1>
<add2>2</add2>
<denyu>3</denyu>
</add>
</ento>
#开发代码
class Clac():
def add(self,a,b):
return a + b
def jian(self,a,b):
return a - b
#读取数据
from xml.dom import minidom
class ReadXml():
def readxml(self,path,firsthod,secondnode):
root = minidom.parse(path)
firsthod = root.getElementsByTagName(firsthod)[0]
secondnode = firsthod.getElementsByTagName(secondnode)[0].firstChild.data
return secondnode
#测试代码
from readdata.readxml import ReadXml #获取数据
from assets.clac import Clac #引入开发代码
import pytest,allure,os
readxmlclass = ReadXml()
c = Clac()
aa = int(readxmlclass.readxml("../data/test.xml","add","add1"))
bb = int(readxmlclass.readxml("../data/test.xml","add","add2"))
cc = int(readxmlclass.readxml("../data/test.xml","add","denyu"))
class TestClass():
@allure.feature("加法判断功能") #用于定义被测试的功能,被测产品的需求点
@allure.story("断言成功") #用于定义被测功能的用户场景,即子功能点
def test001(self):
with allure.step("查看相加结果"): #用于描述测试步骤,将会输出到报告中
allure.attach("等于3","1加2")
result = c.add(int(aa),int(bb))
assert result == int(cc)
@allure.feature("等于判断功能")
@allure.story("断言失败")
def test002(self):
assert 1==2
if __name__ == '__main__':
pytest.main(['--alluredir', 'report/result', 'test_01.py']) # 生成json类型的测试报告
split = 'allure ' + 'generate ' + './report/result ' + '-o ' + './report/html ' + '--clean' # 将测试报告转为html格式
os.system(split) # system函数可以将字符串转化成命令在服务器上运行