pytest 运行脚本 -k参数详解
时间: 2024-12-18 09:34:08 浏览: 4
`pytest` 是一个非常流行的 Python 测试框架,它提供了许多强大的功能来帮助开发者编写和运行测试。其中,`-k` 参数是一个非常有用的选项,它允许你根据表达式来选择要运行的测试用例。
### `-k` 参数详解
`-k` 参数用于指定一个表达式,只有匹配该表达式的测试用例才会被执行。这个表达式可以包含简单的字符串匹配、正则表达式等。
#### 基本用法
1. **简单字符串匹配**:
```bash
pytest -k "test_example"
```
这将运行所有名称中包含 `test_example` 的测试用例。
2. **正则表达式**:
```bash
pytest -k "test_[0-9]+"
```
这将运行所有名称匹配正则表达式 `test_[0-9]+` 的测试用例,即名称以 `test_` 开头并跟随一个或多个数字的测试用例。
3. **逻辑运算**:
你可以使用逻辑运算符(如 `and`, `or`, `not`)来组合多个条件。例如:
```bash
pytest -k "test_example and not test_exclude"
```
这将运行所有名称中包含 `test_example` 但不包含 `test_exclude` 的测试用例。
4. **排除测试**:
你还可以使用 `not` 关键字来排除某些测试用例。例如:
```bash
pytest -k "not slow"
```
这将运行所有名称中不包含 `slow` 的测试用例。
#### 示例
假设你有以下测试文件 `test_sample.py`:
```python
def test_fast():
assert True
def test_slow():
assert True
def test_example_1():
assert True
def test_example_2():
assert True
```
你可以使用不同的 `-k` 参数来运行特定的测试用例:
- 运行所有名称中包含 `example` 的测试用例:
```bash
pytest -k "example"
```
输出:
```plaintext
============================= test session starts =============================
...
collected 4 items / 2 deselected / 2 selected
test_sample.py::test_example_1 PASSED [ 50%]
test_sample.py::test_example_2 PASSED [100%]
============================= 2 passed in 0.02s =============================
```
- 运行所有名称中包含 `1` 的测试用例:
```bash
pytest -k "1"
```
输出:
```plaintext
============================= test session starts =============================
...
collected 4 items / 3 deselected / 1 selected
test_sample.py::test_example_1 PASSED [100%]
============================= 1 passed in 0.01s =============================
```
- 运行所有名称中包含 `fast` 但不包含 `slow` 的测试用例:
```bash
pytest -k "fast and not slow"
```
输出:
```plaintext
============================= test session starts =============================
...
collected 4 items / 3 deselected / 1 selected
test_sample.py::test_fast PASSED [100%]
============================= 1 passed in 0.01s =============================
```
###
阅读全文