测试执行

PnxTest底层采用xml文件的形式对测试用例进行组织编排和执行(这点和testng很类似), PnxTest xml文件格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://pnxtest.com/pnxtest.xsd">

<suite name="PnxTest功能验证与演示" 
       threadCount="1" 
       runMode="sequence" 
       description="PntTest测试框架功能验证和演示。失败的用例用于展示,不代表框架功能本身存在问题">
    <test name="核心特性">
        <class name="com.pnxtest.integrationTest.controller.pnxtest.core.BasicTestCaseAttributesTest"/>
        <class name="com.pnxtest.integrationTest.controller.pnxtest.core.DataDrivenTest"/>
        <class name="com.pnxtest.integrationTest.controller.pnxtest.core.AssertionTest"/>
        <class name="com.pnxtest.integrationTest.controller.pnxtest.core.EnvironmentPropertiesTest"/>
    </test>

    <test name="真实场景例子">
        <class name="com.pnxtest.integrationTest.controller.realScenario.ProductServiceTest"/>
    </test>

    <test name="生态项目">
        <class name="com.pnxtest.integrationTest.controller.pnxtest.http.GetTest"/>
        <class name="com.pnxtest.integrationTest.controller.pnxtest.http.PostTest"/>
        <class name="com.pnxtest.integrationTest.controller.pnxtest.http.DynamicalRouterTest"/>
        <class name="com.pnxtest.integrationTest.controller.pnxtest.http.AuthTest"/>
        <class name="com.pnxtest.integrationTest.controller.pnxtest.db.DatabaseTest"/>
    </test>
</suite>

IDE执行

1) 创建一个xml文件(参照上面的格式), 保存在项目可以访问的任何地方。例如:/yourPath/yourPnxTestSuite.xml 2) 在MyPnxTestApplication中指定要执行的suite

@PnxTestApplication(
        envID = "default",                             //指定测试环境
        suiteFile = "yourPnxTestSuite.xml"                       //指定测试suite file(需放置在resources目录下), 如果不指定,将自动创建
)
public class MyPnxTestApplication {
    public static void main(String[] args){
        PnxTest.run(MyPnxTestApplication.class, args);
    }
}

3)如果没有指定xml文件,PnxTest会尝试去搜索和创建默认的suite文件,该suite文件将包含当前包名下的所有测试用例 4)点击右键,选择“运行MyPnxTestApplication.main”就开始执行了

Q: 能否右键点击某个xml文件、测试方法、测试类就可以有菜单使用PnxTest执行? A: 目前不可以

如果要运行或者调试 单个测试用例或者测试类,请编辑xml文件, 只包含某个测试方法或测试类。这是目前在PnxTest IDE插件没有出来前的折衷方法。

<test name="核心特性">
        <class name="com.pnxtest.integrationTest.controller.pnxtest.core.BasicTestCaseAttributesTest">
            <method name="testBasicAttributesOfATestCase"/>
    </class>
</test>

CLI命令行执行

  1. 打包你的pnxtest项目为一个可执行的jar, 参考integrationTest项目中的maven-assembly-plugin设置
  2. Copy 可执行jar到你想要的目录
  3. 编辑bin目录下的PnxTest.sh(linux)或PnxTest.bat(windows)文件, 修改里面的jar为你自己的路径和名称
  4. 执行PnxTest.sh, 如果提示"no permissions": chmod +x PnxTest.sh 后再执行
nicolas.chen@MacBook-Pro integrationTest % ./bin/PnxTest.sh -help
PnxTest commandline usage:
    -target     <suiteFile>             [*required] specify test suite file
    -env        <EnvironmentId>         [optional] specify test environment ID
    -config     <configLocation>        [optional] specify test config location
    -outputting <outputtingLocation>    [optional] specify test outputting location
    -help                               print helper

console-snapshot

并行执行

PnxTest提供参数设置来并行执行测试用例,对于大规模的测试用例,可以缩短执行时间、提高执行效率。

  • threadCount: 设置线程数量

  • runMode: 设置运行模式,有三种:

  • sequence:顺序执行。这种模式下参数threadCount将被忽略
  • testParalled:suite中的test 并行运行
  • classParalled:suite中的class 并行运行

在pnxtest suite xml文件中: 直接修改threadCount与runMode参数来变更运行模式

CI/CD

有了cli命令行执行,放到CI如jenkins里岂不是易如反掌