当我指定使用'-k'运行的Pytest函数时,我期望只运行一个函数。但是,它正在运行两个测试。
python3 -m pytest -s /home/jorge/projects/grip/grip-server/tests/unit/models/json_models/test_recovery_time_series.py -k 'test_generate_recovery_time_series_columns_for_single_data_row'
输出:
============================================================================ 2 failed, 1 warnings in 0.59 seconds ============================================================================
测试:
import json
from pathlib import Path
import os
from models.json_models.asset_models import generate_asset_models_from_json_dump_path_no_glm_json
from utils.globals import SIMULATION_TYPES
from tests.data.recovery.recovery_asset_models_api_response import get_recovery_asset_models_api_response
from models.json_models.recovery_time_series import generate_recovery_time_series_columns_for_single_data_row
import pytest
@pytest.fixture(scope='module')
def global_data():
row = ['2019-09-18T18:00:00Z', '100', '50', '123', '45',
'50', '123', '100', '50', '123', '45', '50', '123',
'123.45', '543.21', '123.45', '543.21', '123.45',
'543.21', '123.45', '123.45', '543.21', '123.45',
'543.21', '123.45', '543.21']
original_headers = ['timestamp', 'node_001__measured_voltage_A___mag',
'node_001__measured_voltage_A___ang',
'node_001__measured_voltage_B___mag',
'node_001__measured_voltage_B___ang',
'node_001__measured_voltage_C___mag',
'node_001__measured_voltage_C___ang',
'node_002__measured_voltage_A___mag',
'node_002__measured_voltage_A___ang',
'node_002__measured_voltage_B___mag',
'node_002__measured_voltage_B___ang',
'node_002__measured_voltage_C___mag',
'node_002__measured_voltage_C___ang',
'node_002__measured_power_A___real',
'node_002__measured_power_A___imag',
'node_002__measured_power_B___real',
'node_002__measured_power_B___imag',
'node_002__measured_power_C___real',
'node_002__measured_power_C___imag',
'objective_function_value',
'node_001__measured_power_A___real',
'node_001__measured_power_A___imag',
'node_001__measured_power_B___real',
'node_001__measured_power_B___imag',
'node_001__measured_power_C___real',
'node_001__measured_power_C___imag']
summary_view = {'total_duration': 0.0, 'number_of_time_steps': 0}
new_row = [24, 27]
new_timestep_number = 0
controller_nodes_empty = []
segment_nodes_empty = []
return row, original_headers, summary_view, new_row, new_timestep_number, controller_nodes_empty, segment_nodes_empty
def test_generate_recovery_time_series_columns_for_single_data_row(global_data):
print('running test', type(global_data))
controller_nodes = ['node001', 'node002']
segment_nodes = ['node001', 'node002']
row, original_headers, summary_view, new_row, new_timestep_number, controller_nodes_empty, segment_nodes_empty = global_data
new_row_dict, summary_view = generate_recovery_time_series_columns_for_single_data_row(row, original_headers, summary_view, new_row,
new_timestep_number, controller_nodes, segment_nodes)
print('resp', 'new_row_dict', new_row_dict, 'summary_view', summary_view)
assert(new_row_dict)
timeseries_value = json.loads(new_row_dict['objective_function'][4])['value']
assert (timeseries_value == 123.45)
#assert (new_row_dict['phase_a_controller_power'][3] == 0)
#assert (new_row_dict['phase_a_controller_power'][4] == None)
#assert(summary_view != None and len(summary_view) >= 1)
#assert(summary_view['total_duration'] == 0.0)
#assert (summary_view['number_of_time'] == 0.0)
def test_generate_recovery_time_series_columns_for_single_data_row_no_controller_no_segments(global_data):
print('running test', type(global_data))
row, original_headers, summary_view, new_row, new_timestep_number, controller_nodes, segment_nodes = global_data
new_row_dict, summary_view = generate_recovery_time_series_columns_for_single_data_row(row, original_headers, summary_view, new_row,
new_timestep_number, controller_nodes, segment_nodes)
print('resp', 'new_row_dict', new_row_dict, 'summary_view', summary_view)
assert(new_row_dict)
assert (new_row_dict['objective_function'][4] == 0)
assert (new_row_dict['phase_a_controller_power'][3] == 0)
assert (new_row_dict['phase_a_controller_power'][4] == None)
assert(summary_view != None and len(summary_view) >= 1)
assert(summary_view['total_duration'] == 0.0)
assert (summary_view['number_of_time'] == 0.0)
答案 0 :(得分:1)
-k
选项的工作方式如下:substring match;您认为这两个测试都匹配。
一个选项可以排除您不想运行的选项:
python3 -m pytest -s /home/jorge/projects/grip/grip-server/tests/unit/models/json_models/test_recovery_time_series.py -k 'not no_controller_no_segments'
另一种选择是稍微修改测试功能名称,以便您可以指定单个测试名称。
另一种选择是添加markers,然后使用-m
选项运行带有特定标记的测试。