我是参数化和装置的新手,仍在学习。我发现了一些使用间接参数化的帖子,但根据我的代码中的内容,我很难实现。如果有任何关于我如何实现这一目标的想法,我将不胜感激。
我的 conftest.py 中有几个固定装置,它们向测试文件中的函数“get_fus_output()”提供输入文件。该函数处理输入并生成两个数据帧以在我的测试中进行比较。此外,我根据共同值(“Fus_id”)转租这两个 DF 来单独测试它们。因此,该函数的输出将是 [(Truth_df1, test_df1),(Truth_df2, test_df2)...] 只是为了参数化每个测试和真值 df 的测试。不幸的是,我无法在我的测试函数“test_annotation_match”中使用它,因为该函数需要一个固定装置。
我无法将夹具作为另一个夹具的输入进行参数化。是的,pytest 不支持它,但无法找到间接参数化的解决方法。
#fixtures from conftest.py
@pytest.fixture(scope="session")
def test_input_df(fixture_path):
fus_bkpt_file = os.path.join(fixture_path, 'test_bkpt.tsv')
test_input_df= pd.read_csv(fus_bkpt_file, sep='\t')
return test_input_df
@pytest.fixture
def test_truth_df(fixture_path):
test_fus_out_file = os.path.join(fixture_path, 'test_expected_output.tsv')
test_truth_df = pd.read_csv(test_fus_out_file, sep='\t')
return test_truth_df
@pytest.fixture
def res_path():
return utils.get_res_path()
Run Code Online (Sandbox Code Playgroud)
#test script
@pytest.fixture
def get_fus_output(test_input_df, test_truth_df, res_path):
param_list = []
# get output from script
script_out = ex_annot.run(test_input_df, res_path)
for index, row in test_input_df.iterrows():
fus_id = row['Fus_id']
param_list.append((get_frame(test_truth_df, fus_id), get_frame(script_out, fus_id)))
# param_list …Run Code Online (Sandbox Code Playgroud) 我有一个bash数组"RUN_Arr",其值如下所示.如果值相同,我希望脚本继续,否则我想报告它们.
echo "${RUN_Arr[@]}"
"AHVY37BCXY" "AHVY37BCXY" "AHVY37BCXY" "AHVY38BCXY" "AHVY37BCXY" "AHVY37BCXY"
Run Code Online (Sandbox Code Playgroud)
基于上面的数组,我想回应:
No the array values are not same
"AHVY37BCXY" "AHVY38BCXY"
Run Code Online (Sandbox Code Playgroud)
有人可以提出解决方案吗?谢谢.
我试图找到一种方法来在一行中完成两个动作if语句,我可以找到很多答案来执行if语句中的单个动作,但不是这样.它甚至可能吗?我试过这样的东西,但是失败了,因为ValueError - 解压缩的值太多了(预期2).谢谢.
g, er = "id", "err" if no_of_errs <= 1 else "ppd", "ers"
Run Code Online (Sandbox Code Playgroud) 我有两个DF1和DF2,如下所述.两个数据帧的第一列"POS"可能匹配,但其他列将不同.我想比较两个数据帧的'POS'列,如果DF1的'POS'值在DF2'POS'列中,我想将该行存储在新的DF1数据帧中,并对DF2执行相同的操作.通过将POS保持为键并比较它们以获得相应的值,我可以轻松地使用字典.但字典不会接受重复的"POS"值,所以我想知道Pandas DF是否有解决方案.
df1 =
POS id freq
0 100 "idex" 3.0
1 102 "ter" 2.0
2 102 "pec" 4.0
3 103 "jek" 4.0
4 104 "jek" 4.0
df2 =
POS id freq
0 100 "treg" 3.0
1 102 "dfet" 2.2
2 102 "idet" 7.0
3 108 "jeik" 1.0
4 109 "jek" 4.0
Expected:
new_df1 =
POS id freq
0 100 "idex" 3.0
1 102 "ter" 2.0
2 102 "pec" 4.0
new_df2 =
POS id freq
0 100 "treg" 3.0
1 …Run Code Online (Sandbox Code Playgroud) python ×3
pandas ×2
python-3.x ×2
arrays ×1
bash ×1
dataframe ×1
if-statement ×1
linux ×1
pytest ×1
sh ×1
unit-testing ×1
unix ×1