pytest定义在测试用例的变量怎么通过钩子函数拿到conftest里面使用
时间: 2024-10-16 19:20:33 浏览: 33
python pytest进阶之conftest.py详解
在pytest中,如果你需要在测试用例的变量(通常是定义在`test_*.py`文件中的)通过钩子函数拿到`conftest.py`文件中,你可以使用模块级别的变量或者定义在`conftest.py`中的辅助函数来共享数据。
1. **模块级别变量**:
在`conftest.py`中,可以定义一个全局变量,并在`test_*.py`中直接访问它。例如:
```python
# conftest.py
global_shared_variable = {}
def set_shared_value(value):
global_shared_variable['value'] = value
# test_example.py
import conftest
conftest.set_shared_value('example_value')
def test_case():
assert conftest.global_shared_variable['value'] == 'example_value'
```
2. **辅助函数**:
也可以定义一个函数,然后在`test_*.py`中调用该函数来传递值,函数可以在`conftest.py`中获取到这个值:
```python
# conftest.py
def get_shared_value(key):
return some_global_data[key]
# test_example.py
def set_shared_value(key, value):
some_global_data[key] = value
set_shared_value('my_key', 'example_value')
def test_case():
assert get_shared_value('my_key') == 'example_value'
```
请注意,对于敏感的数据,最好还是避免使用全局变量,因为这可能会引入意外的副作用。推荐的做法是将数据封装在类中,并在`conftest.py`中提供一个实例供所有测试模块共享。
阅读全文