Ensine a você a automação completa da interface Python com código-fonte

Prefácio


Definição de interface:

Interface geralmente tem dois significados, um é API (Application Program Interface), interface de programação de aplicativo, é um conjunto de definições, procedimentos e protocolos, por meio da interface API para obter comunicação mútua entre softwares de computador. A outra é Interface, que é uma especificação em linguagens orientadas a objetos, como java, c #, etc., que pode implementar várias funções de herança. A interface no teste de interface se refere à API.

Por que usar a interface:

Se o desenvolvimento do front-end do produto da empresa não foi concluído, a interface foi desenvolvida. Um dia o líder disse, Xiao Wang, você testa esta função de login. Se você não entender a interface, dirá ao líder que esta função não pode ser testada e a página não foi desenvolvida. O líder tratará você! @ ¥ @) ¥!

O teste de interface não precisa olhar para a página de front-end e pode ser envolvido no trabalho de teste antes para melhorar a eficiência do trabalho.


De acordo com a pirâmide de teste, quanto menor o custo, menor é o custo. Um bug na camada inferior pode causar vários bugs na camada superior. Portanto, quanto mais baixo o teste, melhor a qualidade do produto pode ser garantida e o mais economia de custos do teste. O teste de unidade geralmente é feito pelo desenvolvimento, portanto, para o teste, o teste de interface é muito necessário.

Para testes automatizados, a IU tem a maior variabilidade, portanto, o custo de manutenção dos testes automatizados de IU é alto. As mudanças de interface são muito pequenas, então o teste automático de interface é o mais prático e econômico.

2. Processo básico

O processo de teste automatizado de funções de interface é o seguinte:
análise de requisitos -> design de caso de uso -> desenvolvimento de script -> execução de teste -> análise de resultados

2.1 Interface de exemplo


Endereço da interface de atribuição de número de celular : http://apis.juhe.cn/mobile/get
Formato de retorno: json / xml
Método de solicitação: obter
exemplo de solicitação: http://apis.juhe.cn/mobile/get?phone=mobile Número de telefone e chave = a KEY que você solicitou

3. Análise de demanda

A análise de requisitos refere-se a documentos como requisitos e projeto.Com base no entendimento dos requisitos, é necessário conhecer a lógica de implementação interna, e nesta fase, requisitos e projetos não razoáveis ​​ou omissões podem ser propostos.

Como: interface de atribuição de número de telefone móvel, insira o número do telefone móvel de diferentes intervalos de números, verifique a atribuição do número do telefone móvel e a qual operadora o número do telefone celular pertence

4. Design de caso de uso

5. Desenvolvimento de script

5.1 Instalação do módulo

Use o comando pip para instalar:

pip install requests

5.2 Chamada de interface

Usando a biblioteca de solicitações, podemos escrever facilmente os métodos de chamada de interface acima (por exemplo, telefone de entrada = número do telefone celular, o código de amostra é o seguinte):
ao escrever scripts de teste automatizados, precisamos fazer alguns pacotes.

#!/usr/bin/python3

import unittest
import requests
import json

class Test_Moblie(unittest.TestCase):

    # 封装公共的数据
    def common(self, phone):
        url = "http://apis.juhe.cn/mobile/get"
        date = {
    
    
            'key': "4391b7dd8213662798c3ac3da9f54ca8",
            'phone': phone
        }
        self.response = requests.get(url, params=date)
        return self.response

    def test_1(self):
        self.common("1857110")
        print(self.response.text)

    def test_2(self):
        self.common("1868115")
        print(self.response.text)

if __name__ == '__main__':
    unittest.main() 
 

Seguimos o design do caso de teste e escrevemos scripts de teste automatizados para cada função por vez.

5.3 Verificação de resultados

Ao testar a interface manualmente, precisamos julgar se o teste passou pelo resultado retornado pela interface, e o mesmo é verdadeiro para o teste automatizado.
Para esta interface, entre no telefone celular, precisamos determinar se o código de resultado do resultado retornado é igual a 200. Quando os resultados são paginados, precisamos verificar se o número de resultados retornados está correto, etc. O código de verificação de resultado completo é o seguinte:

#!/usr/bin/python3

import unittest
import requests

class Test_Moblie(unittest.TestCase):

    # 封装公共的数据
    def common(self, phone):
        url = "http://apis.juhe.cn/mobile/get"
        date = {
    
    
            'key': "4391b7dd8213662798c3ac3da9f54ca8",
            'phone': phone
        }
        self.response = requests.get(url, params=date)
        return self.response

    def test_2(self):
        self.common("1868115")
        print(self.response.json())
        dict_2 = self.response.json()
        # 打印值省份值为:200
        resultcode = dict_2["resultcode"]
        # 为演式错误的示例,将对比值改为200,正确值为200,可自行修改
        self.assertEqual(resultcode, "200", msg='失败原因:%s != %s' % (resultcode, "200"))

if __name__ == '__main__':
    unittest.main()

resultado da operação:

5.4 Gerar relatório de teste

Depois que o caso de uso é executado, ele precisa ser relatado ao líder.
Em seguida, usamos o plugin de módulo de terceiros HTMLTestRunner para gerar relatórios de teste em formato html

from unittest import TestSuite
from unittest import TestLoader
import requests
import json
import HTMLTestRunner
import unittest

class Test_Moblie(unittest.TestCase):

    # 封装公共的数据
    def common(self, phone):
        url = "http://apis.juhe.cn/mobile/get"
        date = {
    
    
            'key': "4391b7dd8213662798c3ac3da9f54ca8",
            'phone': phone
        }
        self.response = requests.get(url, params=date)
        return self.response

    def test_1(self):
     """判断状态码"""
        self.common("1857110")
        print(self.response.json())
        # 返回数据为dict
        print(type(self.response.json()))
        dict_1 = self.response.json()
        # 打印值省份值为:湖北
        province = dict_1["result"]["province"]
        self.assertEqual(province, "湖北", msg='失败原因:%s != %s' % (province, "湖北"))

    def test_2(self):
     """判断省份"""
        self.common("1868115")
        print(self.response.json())
        dict_2 = self.response.json()
        # 打印值省份值为:湖北
        resultcode = dict_2["resultcode"]
        # 为演式错误的示例,将对比值改为201,正确值为200,可自行修改
        self.assertEqual(resultcode, "201", msg='失败原因:%s != %s' % (resultcode, "200"))

if __name__ == '__main__':

    report = "E:/report_path/result.html"
    file = open(report,"wb")
    # 创建测试套件
    testsuit = unittest.TestSuite()
    testload = unittest.TestLoader()
    # 括号内传入的是类名,会自动找到以test开头全部的用例
    # 用例以例表形式存储
    case = testload.loadTestsFromTestCase(Test_Moblie)
    testsuit.addTests(case)
    run = HTMLTestRunner.HTMLTestRunner(stream=file,
                                        title="接口自动化测试报告",
                                        description="用例执行结果")
    run.run(testsuit)
    file.close()

5.5 Enviar relatório de e-mail

Após a conclusão do teste, podemos usar o método fornecido pelo módulo zmail para enviar um relatório de teste em formato html

O processo básico é ler o relatório de teste -> adicionar conteúdo de e-mail e anexos -> conectar ao servidor de e-mail -> enviar e-mail -> sair, o código de amostra é o seguinte:

#!/usr/bin/python3

import zmail


def send_mail():
    # 定义邮件
    mail = {
    
    "subject": "接口测试报告",# 任一填写
            'content_text': '手机号归属地_API自动化测试报告',# 任一填写
            # 多个附件使用列表
            "attachments": "E:/report/result.html"
            }
    # 自定义服务器
    # 如果不知道如何查看授权码,请查看这一篇博客:https://www.cnblogs.com/zzpython/p/13095749.html
    server = zmail.server("发送人邮箱.com",
                          "QQ邮箱是用授权码",
                          smtp_host="smtp.qq.com",
                          smtp_port = 465)
    # 发送邮件
    server.send_mail("收件人QQ邮箱", mail)

try:
    send_mail()
except FileNotFoundError:
    print("未找到文件")
else:
    print("发送成功")

6. Análise de resultados

Depois de abrir o relatório de teste gerado após a conclusão, pode-se ver que um total de 2 casos de teste foram executados neste teste, um foi bem-sucedido e um falhou

Por fim, envie o e-mail do relatório de teste, a captura de tela é a seguinte:

Se o artigo for útil para você, por favor, estenda a mão para fazer uma fortuna e me dê um like. Obrigado pelo seu apoio. Seus likes são minha motivação para uma atualização contínua.

Se você deseja trocar experiências em teste de software, teste de interface, teste automatizado, pares técnicos, integração contínua e entrevistas. Se você estiver interessado, pode ir para 313782132. Haverá compartilhamento ocasional de dados de teste no grupo.


Finalmente: benefícios

Na indústria de tecnologia, você deve aprimorar suas habilidades técnicas e enriquecer sua experiência prática em projetos de automação, o que será muito útil para o planejamento de sua carreira nos próximos anos e para a profundidade de sua tecnologia de testes.

Na temporada de entrevistas do Golden 9th e Silver 10th, a temporada de empregos, organizar perguntas para entrevistas se tornou meu hábito por muitos anos! A seguir está minha coleção e classificação nos últimos anos, o todo é organizado em torno de [teste de software], o conteúdo principal inclui: vídeo exclusivo de teste de automação python, detalhes de automação Python, um conjunto completo de perguntas de entrevista e outros conteúdos de conhecimento.

Para amigos de teste de software, deve ser o warehouse de preparação de entrevista mais abrangente e completo. Para organizar melhor cada módulo, também me refiro a muitas postagens de blog de alta qualidade e projetos na Internet e me esforço para não perder todos os pontos de conhecimento. Os amigos confiaram nesses conteúdos para revisar e receberam ofertas de grandes fábricas como a BATJ. Este depósito também ajudou muitos alunos a testar o software e espero que possa ajudar você também!

Que você e eu nos encontremos e você encontrará algo! Bem-vindo a seguir a conta pública do WeChat: [Artigo Sad Spicy] Receba gratuitamente um livro de entrevistas com o engenheiro de teste de software de 216 páginas. E os tutoriais de aprendizagem em vídeo correspondentes são gratuitos para compartilhar!

Acho que você gosta

Origin blog.csdn.net/weixin_50829653/article/details/112892706
Recomendado
Clasificación