A estrutura de teste automatizado de interface Python 2.0 permite que você escreva casos de teste como Postman, suportando comutação de vários ambientes, dependências de vários negócios, asserções de banco de dados, etc.

Introdução ao Projeto

Projeto de teste de automação de interface 2.0

Arquitetura de software

Esta estrutura é baseada principalmente na estrutura de automação de interface implementada por Python + unittest + ddt + HTMLTestRunner + log + excel + mysql + notificação corporativa WeChat + Jenkins.

Prefácio

A empresa de repente exige que você faça automação, mas você não sabe como fazer isso sem uma base de codificação? Ou você tem a base para automação, mas não sabe como fazer a automação sistematicamente, mantê-la em arquivos Excel e não sabe como lidar com a lógica das dependências multinegócios. Ou você pode escrever algum código para cada caso de teste como Postman.Script, mas não sei como fazer. Então minha estrutura de testes automatizados no gitee resolverá esses problemas para você.

Vantagens da estrutura

Esta estrutura não cobra taxas Fenhe, sua vantagem é que os testadores escrevem casos de teste diretamente e todos os casos de teste podem ser executados automaticamente executando um arquivo de teste.

A estrutura é escrita principalmente em linguagem python e combinada com unittest para desenvolvimento secundário. Os usuários só precisam escrever casos de teste em arquivos Excel. Após a escrita bem-sucedida, o código dos casos de teste será gerado automaticamente. Mesmo novatos com zero codificação básica podem operar isto.

Esta estrutura suporta comutação multi-ambiente, dependências de interface multi-negócios, asserções de banco de dados mysql e asserções de resposta de interface, e os casos de uso são mantidos diretamente em arquivos Excel sem escrever código de negócios. Esta estrutura suporta expansão dinâmica de funções de script e as funções podem ser predefinidas internamente a qualquer momento, ou adicione um script dinâmico para chamar dinamicamente a estrutura unittest da interface por meio do método de escrita de formato fixo {{fun()}} para gerar relatórios HTML e relatórios de execução de casos de uso do Excel e enviar notificações corporativas do WeChat/notificações DingTalk/e-mail notificações/notificações Feishu para configuração flexível.

Implementar função

  • Teste o isolamento de dados e obtenha unidade de dados.
  • Suporta o uso de vários ambientes. Por exemplo, se os casos de teste forem iguais, mas os ambientes forem diferentes, basta habilitar o ambiente que precisa ser executado no Excel.
  • Suporta dependência de dados multi-interface: por exemplo, a interface A precisa contar com os dados de resposta das interfaces B e C como parâmetros ao mesmo tempo, ou a afirmação da interface c precisa usar dinamicamente os parâmetros de entrada da interface A como o esperado resultado.
  • Asserção do banco de dados: você pode afirmar escrevendo o sql da consulta diretamente no caso de teste, sem escrever código.
  • Asserções múltiplas dinâmicas: se a interface precisar verificar os dados de resposta e a verificação SQL ao mesmo tempo, serão suportadas várias asserções de cenário.
  • Suporta código de script personalizado (linguagem python), que permite escrever qualquer código pré e pós-script para cada caso de teste, como Postman. Possui operações de objeto de ação integradas e alguns métodos para lidar convenientemente com pré ou pós-scripts.
  • Gerar automaticamente o código do caso de teste: O testador preenche o caso de teste no arquivo Excel, e o programa pode gerar diretamente o código do caso de uso, que pode ser usado até mesmo por novatos.
  • Suporta funções de extensão personalizadas: se precisar usar suas próprias funções no caso de uso, você pode escrever a função no diretório especificado a qualquer momento e chamar a função definida a qualquer momento por meio de { {func(*args,** kwargs)}}.
  • Possui implementação integrada de algumas funções aleatórias e funções comuns personalizadas: como: string aleatória, data e hora aleatórias, GPS aleatório, cartão de identificação de usuário aleatório, endereço, e-mail, informações corporativas, etc. eles mesmos, e não há limite para uso.
  • Estatísticas sobre o tempo de execução da interface: Expanda a função e personalize o switch para decidir se ele precisa ser usado.
  • Suporta operação de temporizador de caso de uso. Por exemplo: antes do caso de uso B ser executado, o caso de uso A precisa esperar 5 segundos antes do início da execução. Você pode adicionar o tempo de espera à vontade.
  • Módulo de log: imprime as informações de log de cada interface. O switch também é personalizado para determinar se o log precisa ser impresso.
  • Notificações DingTalk, Business WeChat e notificações por e-mail: Suporta vários cenários de notificação. Após a execução bem-sucedida, você pode optar por enviar notificações DingTalk, Business WeChat ou por e-mail.
  • Encapsula a classe para envio de MQTT e oferece suporte ao envio de mensagens MQTT.
  • Suporta a importação de arquivos json exportados por carteiro ou swargs e processá-los automaticamente em casos de teste e, em seguida, modificar os parâmetros pode ser usado.

endereço rural

Endereço da estrutura de automação de interface: Junte-se ao grupo e escolha: WeChat: Testing_player

Encontrar problemas

  • Por favor leia a documentação com atenção, pois ela pode ajudá-lo a evitar quase todos os problemas.
  • Você pode adicionar WeChat: azul-azul-limão. Adicionar WeChat o levará para o grupo de comunicação automatizada. Há muitos amigos entusiasmados no grupo, mas a premissa é que você leu todo o conteúdo do documento.
  • Você também pode pedir ao autor que responda às suas perguntas. Claro, quando tiver tempo livre, também posso pedir ao autor que forneça um serviço individual para você, mediante o pagamento de uma taxa, é claro.

Visão geral do catálogo:

 

Estrutura de diretório detalhada

. └── cases/ // 测试用例数据文件夹 └── cases/ // 测试用例 └── test_cases.xlsx └── templates/ // 测试用例模板 └── template.xlsx └── temporary_file/ // swagger| postman 导出的 json文件存放位置 └── openapi.json └── postman.json └── common/ // 配置及核心功能代码 └── bif_functions/ // 内置函数工具 └── __init__.py └── bif_datetime.py // 内置日期时间函数 └── bif_hashlib.py // 内置hash 函数 └── bif_json.py // 内置json解析函数 └── bif_list.py // 内置列表操作函数 └── bif_random.py // 内置随机函数 └── bif_re.py // 内置正则函数 └── bif_str.py // 内置字符串函数 └── bif_time.py // 内置时间函数 └── random_tools.py // 内置其他随机函数 └── crypto/ // 加密工具 └── __init__.py └── encrypt_data.py // 执行数据加密封装入口 └── encryption_aes.py // aes 加密 └── encryption_base64_to_image.py // base64 转图片工具 └── encryption_main.py // 执行加入函数入口,对应excel中的加密方法选项,结合 extensions 中的 sign 可自定义加密规则 └── encryption_rsa.py // rsa 加密 └── encryption_str.py // 常用的字符串加密工具函数 └── data_extraction/ // 数据提取器 └── __init__.py └── analysis_json.py // json 字典分析函数,类似 jsonpath └── assert_dict.py // 旧断言字段函数 (暂时舍弃) └── data_extractor.py // 数据提取函数 └── dependent_parameter.py // 数据替换函数 └── dict_get.py // 旧路径提取函数 └── database/ // 数据库操作工具 └── __init__.py └── execute_sql_files.py // sql 批处理工具 └── mongodb_client.py // mongoDB 操作工具 └── mysql_client.py // mysql 操作工具 └── psycopg_client.py // presto 操作工具 └── redis_client.py // redis 操作工具 └── file_handling/ // 文件操作 └── __init__.py └── do_excel.py // excel 处理 └── excel.py // excel 处理 └── file_utils.py // json、yarm等文件操作以及一些目录操作 └── http_client/ // http_client 发送http的工具 └── __init__.py └── http_client.py // http 请求封装 └── MQclient/ // MQ 工具 └── __init__.py └── mqtt_client.py // mqtt 工具 └── rabbit_mq_client.py // rmq 工具 └── random_tools/ // 常用随机数工具包 └── credit_cards/ // 随机银行卡 └── __init__.py └── bankcard.py └── cardbin.csv └── credit_identifiers/ // 随机企业唯一信用代码 └── __init__.py └── address.json └── credit_identifier.py └── unified_social_credit_identifier.py └── emails/ // 随机邮箱 └── __init__.py └── email.py └── free_email.csv └── identification/ // 随机身份证 └── __init__.py └── area.csv └── id_card.py └── names/ // 随机姓名 └── __init__.py └── first_name_boy.csv └── first_name_girl.csv └── last_name.csv └── name.py └── phone_numbers/ // 随机手机号 └── __init__.py └── phone.py └── phone_area.csv └── __init__.py └── utils/ // 工具包 └── __init__.py └── captcha.py // 识别图片转字符串,常用于验证码登录 └── load_and_execute_script.py // 动态加载自定义python文件工具 └── logger.py // loggin 日志封装 └── mylogger.py // loguru 日志封装 └── parsing_openapi.py // 解析 swagger 文件 转测试用例 └── parsing_postman.py // 解析 postman 文件 转测试用例 └── singleton.py // 单例 └── WxworkSms.py // 企业微信 └── validation/ // 断言及加载动条函数工具包 └── __init__.py └── comparator_dict.py // 自定义比较器名词释义 └── comparators.py // 自定义比较器 └── extractor.py // 提取器 └── load_modules_from_folder.py // 动态从模块中加载函数 └── loaders.py // 动态加载函数及加载内置比较器等工具包 └── validator.py // 断言校验器 └── __init__.py └── action.py // 核心类 └── config.py // 配置文件 └── variables.py // 数据操作类 └── extensions/ // 动态扩展模块目录 └── __init__.py └── ext_method_online.py // 动态扩展方法模块 └── sign.py // 加签模块 └── image/ └── wx.jpg └── zfb.jpg └── OutPut/ // 日志报错 └── log/ └── 2023-06-25.log └── 2023-07-04.log └── 2023-07-05.log └── reports/ └── history.json └── scripts/ // 动态脚本目录 └── __init__.py └── prepost_script_安全纯净大屏_2.py // 对应每条测试用例的前后置脚本(可选) └── request_script_sheetname_id.py └── test_script/ // 测试脚本核心模块 └── __init__.py └── test_api.py └── directory_tree.txt └── excel_converter.py // postman、swagger 文件转换主入口模块 └── generate_tree.py // 项目目录树模块 └── main_personal_information.py // 随机个人信息核心入口 └── pipenv_command.text └── Pipfile └── Pipfile.lock └── README.md └── run.py // 自动化测试执行入口模块

Tutorial de instalação

Bibliotecas dependentes

Consulte os arquivos do ambiente virtual pipenv --Pipfile, não listados um por um.

Em primeiro lugar, depois de executar esta estrutura, você precisa configurar um ambiente python, que pode ser configurado pelo próprio Baidu.

  1. Instale o ambiente pipenv: pip install pipenv
  2. Crie um ambiente virtual: instalação pipenv
  3. Se alguns pacotes não puderem ser instalados, então: o shell pipenv entra no ambiente e, em seguida, o pipenv instala o pacote XX

Instruções de uso

  1. Para casos de teste, você só precisa preencher os casos de teste no arquivo cases/cases/xxx.xlsx. Você pode consultar o arquivo de modelo de caso de teste. Como os casos de uso no arquivo de modelo já processaram informações confidenciais, um erro deve ser relatado ao executar o caso de uso do modelo.
  2. Para executar um caso de uso, você pode inserir test_script/test_xxx.py diretamente e executar o arquivo test_xxx.py ou pode executar diretamente o arquivo run.py mais externo.
  3. Personalinformation.py Este arquivo é usado para gerar alguns dados de teste para testes funcionais ou outros testes gerais.

Documentação da interface de teste aberta

Você pode usar o login, informações pessoais, coleta (adicionar, visualizar, modificar, excluir) e outras funções na interface de código aberto para escrever casos de automação de interface e, em seguida, no script do programa de teste está o endereço do documento da interface, que você pode visualizar sozinho (porque a interface de código aberto possui algumas funções lógicas, como modificar a interface de URL excluída sem muito julgamento, portanto, apenas alguns cenários básicos são escritos no caso de uso apenas para sua referência).

Como criar um caso de uso

Introdução aos campos relacionados ao caso de teste no Excel

O que se segue é sobre todos os campos de um caso de uso. Nem todos os campos são obrigatórios.

 

A seguir explica-se a função de cada campo:

  • Id: ID do caso de teste, exclusivo, obrigatório
  • Nome: O nome do caso de teste, obrigatório
  • Descrição: Descrição do caso de teste, opcional, recomendado para preenchimento, este campo será utilizado no relatório gerado
  • Executar: se este caso de uso deve ser executado. Se não for preenchido ou preenchido incorretamente YES/yes, este caso de uso não será executado.
  • Tempo: cronômetro, número, opcional, preencha o número de segundos que irá esperar antes de executar este caso de uso
  • Método: método de solicitação, suporta todos os métodos de solicitação http, get/post/put/patchetc.
  • Url: caminho da interface ou endereço completo da solicitação. Se não contiver um nome de domínio, será automaticamente unido à tabela init com o host. O URL pode ser parametrizado, como:/test/api/get/{ {id}}/{ {func(*args,**kwargs)}}
  • Cabeçalhos: cabeçalhos de solicitação, método de preenchimento de dicionário, como:{"Content-Type":"application/json","token":"{ {token}}",'time':'{ {timestamp()}}'}
  • Criptografia de cabeçalhos: se o cabeçalho da solicitação estiver criptografado, você pode personalizar o método de criptografia e, em seguida, inserir o nome do método de criptografia aqui, como MD5\sha1etc.
  • Query Str: Parâmetros de string de consulta, ou seja, quando a URL for muito longa, você pode separar os parâmetros atrás da URL e preenchê-los aqui. Preencha-os em um dicionário e suporte para parametrização.
  • Tipo de dados da solicitação: tipo de parâmetro da solicitação, incluindo json,file,params,datae assim por diante
  • Dados da Solicitação: Os parâmetros da solicitação, preenchidos em formato de dicionário, suportam parametrização, como:{"projectId":"{ {projectId}}","tvSequence":"{ {random_string()}}"}
  • Script de configuração: Pré-script, você pode escrever código pthon diretamente, como classes, funções, etc. Se for uma função, a classe deve ser chamada antes de ser executada. Exemplo de como escrever:
# 可以写类,可以写函数,可以直接普通python语句, def setup(action): print("获取action示例的属性", action.get_vars()) # 更新属性到action实例的属性中 action.update_vars("999", "99999") print("获取所有的临时变量", action.get_variable()) print("将变量存到临时变量表中以便后续用例{
   
   {key}}使用", action.update_variable("key", "value")) print("将函数存到临时变量表,以便后面调用{
   
   {setup_func()}}也可以", action.update_variable("setup_func", setup)) # 调用方法 setup(action)
  • Solicitar criptografia de dados: se os parâmetros da solicitação são criptografados, você pode preencher o método de criptografia necessário, como MD5\sha1etc.
  • Extrair dados de solicitação: extraia campos de parâmetros de solicitação ou todo o dicionário de parâmetros de solicitação, como:{"k": "$.projectId", "x": "$.data[0].age[3].a"}
  • Jsonpath: extrai a expressão jsonpath do resultado da resposta. Exemplo: por padrão, se o resultado da expressão tiver apenas um valor, ele será salvo como uma string. Se o resultado da execução da expressão tiver vários valores, ele será salvo como uma lista A expressão é preenchida da seguinte forma:{"k": "$.data", "x": "$.data[0].age[3].a"}
  • Regex: Expressão regular, preencha a string da expressão regular, exemplo:r'"id": (\d+), "name": "(\w+)",'
  • Lista de parâmetros Regex: preencha uma lista (lista) para armazenar a lista de variáveis ​​​​do valor de extração da expressão regular, como: , ["a", "b"]o que significa usar as variáveis ​​​​a, b para receber o valor de retorno da expressão regular acima
  • Recuperar valor: o método de recuperação de valor do dicionário python.Múltiplas entradas são separadas por ponto e vírgula, como:name=data[0].name;ok=data[0].id;an=data[0].age[3].a
  • SQL: Preencha a instrução sql adicionar, excluir, modificar e consultar. A chave do dicionário é o método sql que precisa ser executado e o valor é a instrução sql. Você pode preencher várias entradas. Exemplo do formato de preenchimento :
{ "insert": { "insert_data": "INSERT INTO users (name, age, email) VALUES ('John', 25, '[email protected]');" }, "select": { "select_data": "SELECT name, age, email FROM users WHERE age > 20;" }, "delete": { "delete_data": "DELETE FROM users WHERE age > 30;" }, "update": { "update_data": "UPDATE users SET age = 26 WHERE name = 'John';" } }
  • Sql Params Dict: extraia o resultado do sql, igual ao jsonpath, como:{"name": "$.select.select_data.name", "age": "$.select.select_data.age"}
  • Teardown Script: código de script python pós-instalado, qualquer função ou classe, o código será executado automaticamente após o caso de uso enviar uma solicitação
  • Esperado: resultado esperado, exemplo de escrita: [{"check":"result.user.name","comparator":"eq","expect":"chenyongzhi"}]ou {"check":"result.user.name","comparator":"eq","expect":"chenyongzhi"}, os métodos de comparação de asserções suportados são os seguintes:
{ "eq": "eq:实际值与期望值相等", "lt": "lt:实际值小于期望值", "lte": "lte:实际值小于或等于期望值", "gt": "gt:实际值大于期望值", "gte": "gte:实际值大于或等于期望值", "neq": "neq:实际值与期望值不相等", "str_eq": "str_eq:字符串实际值与期望值相同", "length_eq": "length_eq:实际值的长度等于期望长度", "length_gt": "length_gt:实际值的长度大于期望长度", "length_gte": "length_gte:实际值的长度大于或等于期望长度", "length_lt": "length_lt:实际值的长度小于期望长度", "length_lte": "length_lte:实际值的长度小于或等于期望长度", "contains": "contains:期望值包含在实际值中", "contained_by": "contained_by:实际值被包含在期望值中", "type_match": "type_match:实际值的类型与期望值的类型相匹配", "regex_match": "type_match:正则匹配(从字符串的起始位置匹配)", "regex_search": "regex_search:正则匹配(从字符串的任意位置匹配)", "startswith": "startswith:实际值是以期望值开始", "endswith": "endswith:实际值是以期望值结束" }
  • Resposta: O resultado da resposta. Depois que o caso de uso for executado, o resultado será automaticamente gravado de volta neste Excel. Você pode visualizar os resultados do teste com clareza e rapidamente.

Crie etapas de caso de uso

Antes de começar a preencher os casos de teste, primeiro dê uma olhada nos campos da tabela init, vou explicá-los detalhadamente a seguir:

 

  1. Crie o módulo ou sistema em teste na casespasta e, em seguida, crie excelcasos de uso relacionados no sistema (você pode copiar o arquivo Excel do modelo para preencher os casos de teste)
  2. Adicione o caminho do caso de teste ao arquivo na commonpastaconfig.py
  3. Entre na pasta, opere o arquivo test_script/na pasta e substitua o endereço da variável pelo endereço do caso de teste que você acabou de preencher.test_api.pytest_file
  4. O caso de uso no Excel deve ser preenchido.Além iddisso, init sheetalguns campos do campo de dados de inicialização global da tabela devem ser preenchidos, como:
""" # init 表中的字段 id: 序号 environment: 被测环境,建议填写:如测试环境,开发环境,生产环境等等 host:域名地址,如:https://www.baidu.com,非必填,填写了就会取这部分的地址与测试用例中的Url拼接发送请求 path:一小部分的请求路径,比如所有的接口可能都存在:/test/api 这种,就可以填写上去,非必填 databases: 数据库,非必填,{"host": "127.0.0.1","port": 3306,"database": "mysql","user":"root","password":"root@3306"} sheets:你想执行的sheet是哪一个,全部执行就填写 'all',部分执行就填写具体的sheet如["第一个sheet的名称","第二个sheet的名称"...] initialize_data:初始化的一些固定参数,比如登录账号,密码,等等都是基本不变的数据可以填写这里,属于全局变量,填写方式字典{"{
   
   {username}}":"1234","{
   
   {pwd}}":"密码"} run: 决定使用的环境,值为yes表示用这个环境运行,有多个环境都填写yes,只运行第一个yes """

O texto acima foi preenchido. Lembre-se de fechá-lo primeiro excele, em seguida, você pode executar test_api.pyo arquivo separadamente ou executar diretamente run.pyo arquivo de entrada principal para gerar relatórios HTML e relatórios de teste do Excel.

Vamos dar uma olhada em como criar um caso de uso

Introdução aos campos relevantes em casos de uso

  • Envie uma captura de tela para preencher os dados básicos para o caso de uso de inicialização init

 

  • A classificação da lista nas planilhas no init é eficaz e o caso de uso de execução é executado de acordo com a classificação dos valores na lista.
  • A captura de tela abaixo descreve se cada campo no caso de uso do Excel é obrigatório.
  • Cada caso de teste pode ser personalizado para habilitá-lo. Se habilitado, ele será executado. Se não habilitado, será ignorado. O resultado da execução padrão é aprovado.
  • Cada planilha pode ser combinada com casos de uso à vontade. Parâmetros variáveis ​​entre planilhas diferentes podem ser compartilhados (ou seja, as variáveis ​​são globais) e não são projetados de forma independente. Isso ocorre principalmente porque o objetivo da divisão de planilhas é gerenciar casos de uso, mas a execução ainda é de uma só vez.
  • Atualmente, não há design para o número máximo de casos de uso para cada planilha. O padrão é o volume máximo de dados no Excel. Se for constatado que o volume máximo de dados excede a memória, é recomendável escrever casos de teste em vários Excel arquivos.
  • O método gerador usado atualmente para ler o Excel é principalmente para evitar que a memória única exploda.
  • O relatório de teste é gerado de acordo com o Excel. O estilo do relatório de teste não é diferenciado por módulo. Na verdade, você pode ver os resultados do relatório diretamente abrindo o Excel.
  • Outros que têm pouco efeito, como taxa de aprovação, número de itens ignorados, número de itens aprovados, número de itens com falha, etc., não são processados ​​separadamente e são todos processados ​​automaticamente pelo relatório HTML.
  • A captura de tela abaixo é um exemplo de preenchimento dos parâmetros associados.

  

Algumas funções integradas comumente usadas

Todas as funções integradas estão common/bif_functionsneste pacote. Os usuários podem personalizar as funções integradas. Ao projetar funções integradas, você deve projetar um valor de retorno. Você não pode retornar None diretamente. Parece que None não é tratado de maneira especial. O seguinte é uma explicação de algumas funções integradas.

 

  • Este método MD5 geralmente não é usado. Geralmente, se deve usar a [Alteração de campo do modo de criptografia de parâmetro] no Excel para lidar com a criptografia
  • Ao usar funções integradas, { {xxx()}}você pode passar parâmetros para (), por exemplo{ {token(999)}}

  • Obtenha alguns métodos de carimbo de data/hora, que podem receber parâmetros
  • Existem alguns números aleatórios na biblioteca do Faker. Se precisar de mais, você mesmo pode adicioná-los.

 

Adicione tempo de espera ao caso de uso

Um dos campos do Excel Time, o valor do campo é definido como 数字unidade S

 

Antes de o caso de uso ser executado, o sql precisa ser executado separadamente, ou o sql precisa ser executado separadamente após a execução, ou o sql precisa ser executado imediatamente após a solicitação e o sql ser declarado.

Existe um campo de método no Excel. Basta definir o valor como sql. Os seguintes campos de variáveis ​​​​SQL e SQL podem ser preenchidos conforme necessário. Eles devem ser preenchidos de acordo com as especificações ou preencher a instrução sql e as variáveis ​​​​sql após a solicitação . O SQL será executado primeiro por padrão. Execute a solicitação novamente.

 

setup setupclass desmontagem tearDownClass ?

Na verdade, este conjunto de códigos não precisa ser utilizado, você também pode utilizá-lo para customizar algumas funções de inicialização ou utilizá-lo como um login exclusivo para realizar operações de limpeza de dados? Você pode escrever SQL no Excel ou criar uma planilha separada no Excel para executar o SQL. Existem muitos métodos e são muito flexíveis.

Como converter rapidamente arquivos postman ou swagger em casos de teste?

Esta estrutura encapsula a função de análise. Exporte diretamente o arquivo postman, coloque-o no diretório especificado e execute o arquivo excel_converter.py. Você pode obter os casos de teste com muita rapidez e facilidade, sem copiá-los e colá-los um por um.

 

 

 

Mudar para um banco de dados diferente?

Atualmente, há uma variedade de métodos integrados de consulta de link de banco de dados, mas eles ainda não foram usados. Apenas o mysql é usado. Se os usuários precisarem usar outros bancos de dados, como o mongoDB, eles podem expandir esse banco de dados de acordo com o método de design do mysql para adapte-se à escrita de casos de teste do Excel. método, você também pode entrar em contato com o autor para processamento

 

Envie notificações corporativas do WeChat

Você pode modificar livremente os modelos e outras informações enviadas pelo WeChat corporativo conforme necessário.

 

Entrada de execução da função principal

 

Decorador de impressão de toras

 

Exemplo de resultados de impressão de log:

 

 

 

dados básicos

 

 

relatório de teste?

Está disponível em html ou excel, basta utilizá-lo e conferir você mesmo.

 

Relatório de teste do WeChat empresarial:

 

 

relatório de teste HTML:

 

 

Estatísticas do tempo de execução do caso de uso?

A duração da solicitação até a resposta é contada para cada caso de uso. Nenhuma outra informação demorada é contada. Os detalhes podem ser visualizados em HTML.

outro

  • Este framework é uma versão atualizada 2.0. Após a atualização, as funções agora são basicamente mantidas no Excel, sem a necessidade de testadores escreverem código.
  • A diferença da versão 1.0 é que a versão 1.0 não exige que os testadores escrevam código, mas o método de asserção é mais rígido.
  • A versão 1.0 foi integrada à plataforma de teste e desenvolvimento e pode ser utilizada na plataforma, especificamente gitee

Introdução a ferramentas independentes de informações pessoais

A execução direta main_personal_information.pydo arquivo pode gerar ótimos dados de teste. Python gera aleatoriamente informações pessoais, incluindo nome, sexo, idade, data de nascimento, número de identificação, número de cartão bancário, número de telefone, número de celular, endereço de e-mail e outras informações.

Gere informações pessoais aleatórias

PS D:\api-test-project> python .\main_personal_information.py 海省广州市南 请输入你需要生成的数据总数:10 +--------+------+------+------------+--------------------+----------------------+--------------+-------------+-------------------------+----------------------------------------+--------------------+ 门特别行政区 | 用户名 | 性别 | 年龄 | 生日 | 身份证 | 银行卡或信用卡 | 座机 | 手机号 | 邮箱 | 地址 | 统一社会信用代码 | +--------+------+------+------------+--------------------+----------------------+--------------+-------------+-------------------------+----------------------------------------+--------------------+ 西省张家港市 | 刘世 | 男 | 57 | 1965-07-21 | 342422196507219413 | 62263745016607204 | 0744-3715089 | 14705083324 | [email protected] | 甘肃省辽阳县沙湾海口街y座 180548 | 713101514054645086 | | 龙清承 | 男 | 56 | 1966-08-21 | 342400196608212132 | 62284150185529051643 | 0893-4423648 | 13487550352 | [email protected] | 辽宁省玉珍市黄浦重庆街z座 401247 | 93421303115117882W | | 刘娴 | 女 | 37 | 1985-05-23 | 411023198505239964 | 6213058212589619696 | 0562-0004972 | 17303409666 | [email protected] | 福建省拉萨县朝阳胡街X座 479131 | 92341122605351081N | | 朱晨 | 男 | 55 | 1967-10-08 | 142733196710082991 | 45128971703439970 | 0375-7394954 | 18024463495 | [email protected] | 宁夏回族自治区秀云县高坪任路Q座 544781 | 955205231604137955 | | 许天有 | 男 | 51 | 1971-10-17 | 330901197110176212 | 62592648755593670 | 0973-8733227 | 13413236004 | [email protected] | 辽宁省天津市南长深圳路f座 952461 | 91120114649961877C | | 陈锦 | 女 | 29 | 1993-02-12 | 452123199302128568 | 62260020819291645 | 0915-7410180 | 17509030433 | [email protected] | 重庆市西安市沙湾广州街G座 531384 | 92445302298701343Q | +--------+------+------+------------+--------------------+----------------------+--------------+-------------+-------------------------+----------------------------------------+--------------------+

Resumir

O que foi dito acima é o que preparei para você hoje. Se você quiser saber mais sobre conhecimentos e habilidades em testes automatizados em Python, preste atenção!


Como obter informações

【Mensagem 777】

Amigos que desejam obter o código-fonte e outros materiais do tutorial, curtam + comentem + coletem , três vezes seguidas!

Após três rodadas consecutivas , enviarei mensagens privadas uma por uma na área de comentários ~

Acho que você gosta

Origin blog.csdn.net/GDYY3721/article/details/132232613
Recomendado
Clasificación