Simple autotest framework, using python and pytest as the basis for data comparison, interface testing, UI testing and so on
Project description
Contents
Installation
pip install xiaoli-autotest-pytest
Usage
1. cli-run
pytest --csv=script/test_hello.csv --slowtime=1000 --headless
cases/test_main.py::test_http_api[Print hello]
Test Case => {'case_id': '0001', 'case_name': 'Test hello', 'step_name': 'Print hello', 'protocols': 'http_api', 'route': 'mods.hello.hello.print_hello', 'parameter': '', 'scope': 'dev'}
=> Load route mods.hello.hello success
=> Load class Hello success
=> Load cases print_hello success
hello
PASSED
2. Parameter Description
| Parameters | Type | Required | Description |
|---|---|---|---|
| --csv | str | Yes | Your script file name |
| --slowtime | int | No | The interval of each step of the UI test, in milliseconds, the default 1000ms is 1 second |
| --headless | boolean | No | Whether to enable headless mode (no browser mode) during UI test |
3. Test Case Script
Create a csv script file in the script directory, e.g. <test_hello.csv>
case_id,case_name,step_id,step_name,method,route,parameter,hard_assert,scope
0001,Test hello,1,Print hello,test_http_api,hello.hello.print_hello,,false,dev
Note: It can be created or opened in Excel, and must be saved in "CSV UTF-8(Comma delimited)" format to avoid garbled Chinese characters. Save as "UTF-8" when using other text tools
4. Test Case Field Description
| Parameters | Type | Required | Description |
|---|---|---|---|
| case_id | str | Yes | Test case number, unique |
| case_name | str | Yes | Test case name |
| step_name | str | Yes | Test case step |
| protocols | str | Yes | Test Protocol http_api: http interface test playwright: UI test driven |
| route | str | Yes | Test class-to-method routing, all lowercase underscores |
| parameter | str | No | Test parameter |
| scope | str | Yes | Test scope, default: smoke, dev, test, stage, etc. |
Report
allure-results is generated by default under the project root directory. The development environment does not automatically generate Allure Report HTML, you need to manually generate and open the html report:
allure serve allure-results
Docker
1. docker pull
docker push roger813/xiaoli-autotest-pytest:tag
2. rename image
Note: This step is optional, if you do not change the name, then the image name in the next step needs to be replaced with the full name
docker tag roger813/xiaoli-autotest-pytest:tag xiaoli-autotest-pytest
3. verify image
docker run -d --name pytest -p 8080:8080 xiaoli-autotest-pytest
- Open the container and the log is displayed: Report successfully generated to allure-report, Images are available.
- Open your browser to access the allure report: http://localhost:8080
- If the following page is displayed, the image is successfully pulled
4. business Test
cd your-project-directory
docker run -d --name pytest -p 8080:8080 -v %cd%\assets:/work/assets -v %cd%\confs:/work/confs -v %cd%\mods:/work/mods -v %cd%\script:/work/script -e csv=custom.csv swpic-autotest-pytest
- Go to your project directory
- Mount the assets, confs, mods, and script directories in the service project
- Add environmental parameters
- -e csv=your_script_file.csv(required)
- -e scope=dev(optional), Determine your test scope, default to full environment testing
- Open your browser to access the allure report: http://localhost:8080
DevOps
Jenkins Pipeline
parameters {
string(
name: 'SCRIPT',
defaultValue: 'your_test_script.csv',
description: '测试脚本CSV文件, 描述测试业务逻辑(必须)')
string(
name: 'TEST_SCOPE',
defaultValue: 'dev,test,stage,smoke,regress',
description: '测试范围, 默认全范围测试. 选择需要测试的用例范围(可选)')
// string(
// name: 'SLOW_TIME',
// defaultValue: '1000',
// description: '测试间隔, UI测试中每一步操作间隔时间, 单位毫秒(可选)')
string(
name: 'BUSINESS_BRANCH',
defaultValue: 'dev',
description: '测试代码仓库分支(可选)')
booleanParam(
name: 'PARALLEL_TEST',
defaultValue: false,
description: '是否多线程, 默认关闭. 适用于没有依赖关系的用例集(可选)')
}
| Parameters | Description | Required | Proposal |
|---|---|---|---|
| SCRIPT | your_script_file | Yes | |
| TEST_SCOPE | test scope | Yes | |
| SLOW_TIME | test interval | No | If it is not a UI test project, you do not need it |
| BUSINESS_BRANCH | Branch of the business repo | Yes | Quickly verify branch correctness and avoid unnecessary merging efforts |
| PARALLEL_TEST | Whether to enable multithreading | No | Enable this, speed up the test, use cases have dependencies and use with caution |
run with parameter
view logs & reports
End
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xiaoli_autotest_pytest-1.0.1.tar.gz.
File metadata
- Download URL: xiaoli_autotest_pytest-1.0.1.tar.gz
- Upload date:
- Size: 5.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a547c365acda18a947e7300504ae64fed5ff6332a3395f6d925c706e20fa17a0
|
|
| MD5 |
ef3b38f8fe3befb41756b1ef2260da88
|
|
| BLAKE2b-256 |
de031cb3ffb00721955a7db4f894965ba41c8d5a795ce35c9f0fad9a3cff5dc2
|
File details
Details for the file xiaoli_autotest_pytest-1.0.1-py3-none-any.whl.
File metadata
- Download URL: xiaoli_autotest_pytest-1.0.1-py3-none-any.whl
- Upload date:
- Size: 4.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
189b31c96f559da5b2dac2513f0a0a92a50a8f41239874c9498fddac4ad86f3f
|
|
| MD5 |
35b8c4a64a60d6bde3f7ccd937e6763b
|
|
| BLAKE2b-256 |
e82143733e8c4a41ce3d7dfaf4d351261056b2026bad2915e83b6e4e4f731cb2
|