python自动测试k_Pytest -k选项不限制测试功能的运行

当我为Pytest指定使用’-k’运行的函数时,我期望只运行一个函数。但是,它正在运行两个测试。

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

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)

解决方案

该-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’

另一种选择是稍微修改测试功能名称,以便您可以指定单个测试名称。

另一个选择可能是添加标记,然后使用-m选项运行带有特定标记的测试。

Original: https://blog.csdn.net/weixin_35002851/article/details/113676169
Author: HylaruCoder
Title: python自动测试k_Pytest -k选项不限制测试功能的运行

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/774198/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球