import pytest import pathlib import plugins.agl_test_log as log from plugins.agl_test_ptest_base import PTESTBase class BashBase(PTESTBase): def __init__(self): super().__init__(test_name="bash") def log_process(self): log_file = self.get_logfile() self.case_info_list = log.log_process_gnu(log_file) def precheck(self): path_bash = pathlib.Path("/usr/bin/bash") return super().precheck() and path_bash.is_file() def get_para(self): #Due to the bug of "ptest-runner", the test case "run-read" may fail xfail_list = ["run-read"] return self.set_xfail_case(xfail_list) def set_xfail_case(self, xfail_list): para = list(self.case_info_list.keys()) for test_case in xfail_list: para.remove(test_case) para.append(pytest.param(test_case, marks=pytest.mark.xfail)) if(self.case_info_list[test_case][1] == "PASS"): self.case_info_list[test_case][2] = "xpassed" else: self.case_info_list[test_case][2] = "xfailed" return para instance = BashBase() instance.run_ptest() @pytest.fixture(scope='module') def testbase(): yield instance #package log files and make report file instance.log_report() @pytest.mark.parametrize('case_name', instance.get_para()) def test_bash(testbase: BashBase, case_name): testbase.run_case(case_name) if __name__ == '__main__': pytest.main("-s run_tests")