Conception et mise en œuvre du framework de tests automatisés à interface simple Python3

1. Environnement de développement

  • Système d'exploitation : Ubuntu18
  • Outils de développement : plug-in IDEA+PyCharm
  • Version Python : 3.6

2. Modules utilisés

  • requêtes : utilisé pour envoyer des requêtes
  • xlrd : utiliser Excel et organiser des cas de test
  • smtplib, email : envoyer le rapport de test
  • journalisation : suivi des journaux
  • json : formatage des données
  • Django : développement d'interfaces
  • configparser : lire les fichiers de configuration

3. Conception du cadre

3.1. Processus

Les cas d'utilisation de l'interface sont organisés via Excel et des colonnes telles que l'URL et le corps de la demande sont définies. Le processus d'exécution est le suivant :

  • Utilisez l'outil XLRD pour lire les informations dans Excel et les regrouper en demandes complètes.
  • La classe de requête d'interface exécute les requêtes complètes une par une. Ce processus doit être enregistré et chaque exécution doit être traçable.
  • Remplissez les résultats des tests, envoyez des e-mails et archivez les résultats de chaque exécution. Une meilleure approche consiste à créer un rapport sur l’état historique des opérations, qui est plus intuitif.

avantage:

  • Les cas d'utilisation sont organisés via Excel, il n'est pas nécessaire d'écrire du code et il est facile de démarrer.
  • Lorsque le nombre de cas d’utilisation n’est pas important, la vitesse de développement est rapide.

défaut:

  • Les dépendances de cas d’utilisation sont un problème.
  • Seuls les cas d’utilisation de l’automatisation de l’interface sont pris en charge.
  • L'exactitude des cas d'utilisation dans Excel ne peut pas être vérifiée à l'avance. Vous ne pouvez le savoir qu'en les exécutant.
  • Il ne peut pas bien gérer un grand nombre de cas d'utilisation et ne prend pas en charge la collaboration en équipe. Ce serait un bon choix pour les individus de l'utiliser pour des tests de régression ou des tests de fumée après s'être connectés.

En comparant les avantages et les inconvénients, on découvre clairement que ce cadre présente en réalité de nombreuses lacunes. Par conséquent, qu’il s’agisse d’un framework de tests automatisés open source dans l’industrie ou développé par une entreprise, Excel n’a jamais été utilisé pour organiser des cas d’utilisation. Il convient de mentionner que le cadre d'automatisation développé par certaines entreprises est très difficile à utiliser, ou qu'il s'agit d'une simple combinaison d'un ensemble d'outils. Cela n’améliore tout simplement pas la productivité de votre équipe. Cependant, les bons produits ne s’obtiennent pas du jour au lendemain et nécessitent un processus d’optimisation continue. Par conséquent, le cadre d’utilisation d’Excel ci-dessus pour organiser les cas d’utilisation vaut la peine d’être utilisé. Appelons-le apitest pour le moment. Actuellement, les meilleurs frameworks de tests automatisés incluent unittest, testng, pytest, etc.

3.2. Structure du projet

  • testcase : fichier json qui stocke les cas de test ou les requêtes.
  • config : fichier de configuration.
  • report : rapports de tests et fichiers journaux et leurs archives.
  • jusqu'à : ensemble d'outils, send_request est utilisé pour envoyer des demandes, email_tool est utilisé pour envoyer des e-mails, excel_tool est utilisé pour lire des données dans Excel, check_result est utilisé pour vérifier les résultats, run_main entrée d'exécution de cas d'utilisation, log_trace est utilisé pour suivre les journaux.

5. Impression du journal

Utilisez le module de journalisation intégré pour enregistrer les journaux en cours d'exécution et définir le niveau de journalisation.
log_trace.log :

import  logging
filename = "../report/test_case_run.log"
logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s %(levelname)s1 %(filename)s [line:%(lineno)d]  %(message)s',
                    datefmt='%a, %d %b %Y %H:%M:%S',
                    filename=filename,
                    filemode='w')

6. Encapsulation de la classe de demande d'interface

Installer des demandes de modules tiers

pip install requests

Définissez la fonction send_request et appelez les méthodes de requête get, post, delete, put et autres en fonction du type de méthode entrant pour envoyer la requête. send_request.py :

import  requests
from untils. log_trace import  *

#发送get请求
def get_request(url,data=None,headers=None):
    res = requests.get(url=url,data=data,headers=headers)
    return res

#发送post请求
def post_request(url,data,headers=None):
    res = requests.post(url=url,data=data,headers=headers)
    return res

#发送delete请求
def del_request(url,data=None,headers=None):
    res = requests.delete(url,data=data)
    return res

#发送put请求
def put_request(url,data,headers=None):
    pass

def send_request(method,url,data=None,headers=None):
    try:
        logging.info(headers)
        if headers:
            if method == "GET":
                return get_request(url,data,headers=headers)
            if method == "POST":
                return post_request(url,data=data,headers=headers)
            if method == "DELETE":
                return  del_request(url,data=data,headers=headers)
            #put使用频率低,暂时不写
            if method == "PUT":
                return  put_request(url,data=data,headers=headers)
        else:
            logging.info("Header is null")
    except Exception as e:
        logging.info("send request fail:%s"%e)

Écrivez du code dans Untils_test.py pour tester la méthode send_request. Le code est le suivant :

#coding:utf-8
from untils.send_request import send_request

def test_send_request():
    url="http://127.0.0.1:9000/articles/"
    headers = {
        "X-Token":"0a6db4e59c7fff2b2b94a297e2e5632e"
    }
    res = send_request("GET",url,headers=headers)
    print(res.json())



if __name__ == "__main__":
    test_send_request()

PYTHON Copier en plein écran

résultat de l'opération :

/usr/bin/python3.6 /home/stephen/IdeaProjects/apitest/untils/untils_test.py
{'status': 'BS.200', 'all_titles': {'amy1': 'alive', 'modifytest': 'alive', 'addTest': 'alive'}, 'msg': 'query articles sucess.'}

Process finished with exit code 0

Tests automatisés de l'interface Python de la base zéro à la maîtrise (dernière version 2023)

 

Je suppose que tu aimes

Origine blog.csdn.net/ada4656/article/details/134321039
conseillé
Classement