Python API for Polyspace 快速入门
您可以通过使用 Python® API for Polyspace® 完全在命令行中管理 Polyspace Test™ 工作流。此示例演示了使用该 API 执行以下操作的工作流:
创建工程。
向该工程中添加源文件和 xUnit 测试文件。
编译和运行该工程中的测试。
前提条件
确保您使用的是支持的 Python 版本并且您能够无错误地导入 polyspace.project 和 polyspace.test Python 模块。有关详细信息,请参阅Set Up Python API for Polyspace。
导入模块
导入 polyspace.project 和 polyspace.test 模块:
import polyspace.project
import polyspace.test
import os创建工程并添加文件
要创建工程,请使用 polyspace.project 模块。
examples_path = os.path.join(polyspace.__install_path__, "polyspace",
"examples", "pstest", "Getting_Started_Example")
polyspaceProject = polyspace.project.Project("getStarted")
polyspace.project.Project 对象 polyspaceProject 和一个工程文件 getStarted.psprjx。使用 polyspaceProject 的属性将源文件和 xUnit 测试文件添加到该工程中。
# Add source code files
polyspaceProject.Code.Files.add(os.path.join(examples_path, "sources", "utils.c"))
polyspaceProject.IncludePaths.add(os.path.join(examples_path, "includes"))
# Add test file
polyspaceProject.Tests.Files.add(os.path.join(examples_path, "tests", "test.c"))要查看 polyspace.project 和 polyspace.test 模块中的对象可用的其他属性和方法,请在键入命令时按 Tab 键。
编译和运行测试
要编译和运行该工程中的测试,请使用 polyspace.test.run() 方法。
res = polyspace.test.run(polyspaceProject)polyspace.test.run() 方法会运行该可执行文件,而不先重新编译。读取测试结果
polyspace.test.run() 方法会返回一个可以用于读取测试结果的 polyspace.test.TestResults 对象。例如,您可以执行以下操作:
检查测试执行的总体状态:
if not res.Status.Failed and not res.Status.Incomplete: print("All tests have passed.") elif res.Status.Failed: print("At least one test failed.") else: print("At least one test did not run to completion.")输出测试失败的套件的名称:
for resTestSuite in res.TestSuiteResults: if resTestSuite.Status.Failed: print(resTestSuite.Name)输出失败测试用例的名称:
for resTestSuite in res.TestSuiteResults: if resTestSuite.Status.Failed: for resTestCase in resTestSuite.TestCaseResults: if resTestCase.Status.Failed: print(f"{resTestSuite.Name}/{resTestCase.Name}")输出失败评估的文件名和行号:
for resTestSuite in res.TestSuiteResults: if resTestSuite.Status.Failed: for resTestCase in resTestSuite.TestCaseResults: if resTestCase.Status.Failed: print(f"{resTestSuite.Name}/{resTestCase.Name}\n") for resAssessment in resTestCase.FailedAssessmentResults: print(f"{resAssessment.File}: Line {resAssessment.Line}")
另请参阅
polyspace.test.run | polyspace.test.build | polyspace.project.Project | polyspace.project.OwnedBuildConfiguration | polyspace.project.OwnedStaticAnalysisConfiguration | polyspace.project.OwnedTestConfiguration | polyspace.test.TestResults