pytest + yaml framework - optimización de ruta de archivo de lectura parametrizada

prefacio

En respuesta a la propuesta del socio pequeño de leer archivos externos durante la parametrización, no hay problema para ejecutar en la ruta raíz del proyecto, pero para ingresar a la subcarpeta debajo del proyecto para ejecutar el caso de uso, no se puede encontrar el archivo. optimizado
Para la lectura parametrizada de archivos externos, consulte el artículo anterior pytest + yaml framework 25. Los datos parametrizados admiten la lectura de archivos externos txt/csv/json/yaml

Instale las siguientes versiones para optimizar los problemas de apelación

pip install pytest-yaml-yoyo==1.2.5

Descripción del problema

La jerarquía del proyecto es la siguiente

D:\demo\yoyo_yaml
├── cases/
│   ├── test_f.yml
├── data/
│   ├── xx.csv
│   ├── yy.csv

contenido del archivo test_f.yml

config:
    name: 参数化读取文件csv

test_p1:
    print: ${username}
    fixtures: username, password
    parameters: ${p('data/xx.csv', False)}

test_p2:
    print: ${username}
    parameters: ${p('data/yy.csv')}

xx.csv en el directorio de datos

test1中文,123456
test2,1234562

yy.csv en el directorio de datos

username,password
test1中文,123456
test2,1234562

D:\demo\yoyo_yaml No hay problema en ejecutar el comando pytest para ejecutar el caso de prueba en el directorio raíz del proyecto .
Pero cuando ingresa  D:\demo\yoyo_yaml\cases el comando pytest y ejecuta el caso de uso, se informará el problema de que no se puede encontrar el archivo.

2023-06-07 23:02:50 [INFO]: parameters 参数化执行用例
2023-06-07 23:02:50 [ERROR]: 文件路径不存在: data\xx.csv
2023-06-07 23:02:50 [INFO]: 取值表达式 p('data/xx.csv', False)

El motivo es que el directorio en ejecución actual se utiliza como nodo. De acuerdo con la ruta relativa, la ruta del archivo se empalma y  D:\demo\yoyo_yaml\cases 'data/xx.csv' se empalma, por lo que no se encontrará la ruta del archivo.

Optimización de búsqueda de ruta

La nueva versión optimiza la ruta del archivo:
1. Primero, de acuerdo con el directorio de archivos que se está ejecutando actualmente como el nodo, empalmando la ruta del archivo, si la ruta no existe, consulte los siguientes 2
2. Tome la ruta raíz del proyecto como el nodo, empalmando la ruta del archivo

En términos generales, es un doble seguro. Si no se encuentra el primer tipo, siga el segundo tipo. Si no se encuentra ningún tipo, se informará un error: la ruta del archivo no existe.

El registro de ejecución del D:\demo\yoyo_yaml\casesdirectorio es el siguiente:

2023-06-07 23:08:07 [INFO]: parameters 参数化执行用例
2023-06-07 23:08:07 [INFO]: 读取文件路径: D:\demo\untitled6_demo_test\data\xx.csv
2023-06-07 23:08:07 [INFO]: 取值表达式 p('data/xx.csv', False)

Si tanto los archivos de prueba como los archivos de casos de uso yaml están en el directorio de casos, también se pueden encontrar con rutas relativas.
La jerarquía del proyecto es la siguiente

D:\demo\yoyo_yaml
├── cases/
│   ├── test_f.yml
│   ├── aa.csv
├── data/
│   ├── xx.csv
│   ├── yy.csv

casos/prueba_f.yml

config:
    name: 参数化读取文件csv

test_p1:
    print: ${username}
    fixtures: username, password
    parameters: ${p('data/xx.csv', False)}

test_p2:
    print: ${username}
    parameters: ${p('data/yy.csv')}

test_p3:
    print: ${username}
    parameters: ${p('aa.csv')}

contenido aa.csv

username,password
test1中文,123456
test2,1234562

 Ejecutar el comando pytest en el directorio raíz del proyecto D:\demo\yoyo_yaml y  debajo de él se puede ejecutar con éxito.D:\demo\yoyo_yaml\cases

Finalmente: el video tutorial completo de prueba de software a continuación ha sido organizado y cargado, y los amigos que lo necesiten pueden obtenerlo por sí mismos [Garantizado 100% gratis]

Adquisición de un conjunto completo de información.

Supongo que te gusta

Origin blog.csdn.net/wx17343624830/article/details/131105781
Recomendado
Clasificación