全局配置

🤔 为什么会有全局配置,全局配置又是什么❓ 在测试用例在执行过程中的,会用到参数、行为等组件,针对这些组件的覆盖策略TestHub内置了六种级别:系统级、项目级、环境级、用例(规则级)、流程级、行为级。 全局配置,特指:系统、项目、环境 三个级别,均在组件库的使用 中设置 ```java copy //见类定义 org.dromara.testhub.server.core.rule.Constant.OwnerType

  1. 1、系统级 整个系统都生效
  2. 2、项目级 项目中生效,一个系统中支持配置多个项目
  3. 3、环境级 一个项目下支持配置多个环境
  4. 4、用例级 一个项目下支持配置多个测试用例
  5. 5、流程级 一个用例中配置配置多个流程
  6. ## 参数声明
  7. 支持 :环境级、用例(规则级)、行为级
  8. <div style="display: flex; justify-content: center; align-items: center;">
  9. <img class="heardImg" src="/images/global/参数覆盖规则.jpg" width="30%">
  10. </div>
  11. ### 环境级
  12. 🤔 为什么要有环境级的参数声明?
  13. 例如在测试过程中我们经常需要在开发环境测试、然后再到发布测试环境测试,两者采用同样的测试用例只不过 两次被测试的服务地址不同那我们就可以使用环境级别的参数声明
  14. ![](/images/logDesc/1_0_2/环境级参数.jpg)
  15. ![](/images/logDesc/1_0_2/选择环境.jpg)
  16. ### 用例级
  17. 🤔 为什么要有用例级的参数声明?
  18. 例如执行一个测试用例,我们每次执行可能采用不同的初始值
  19. 我们已经在基础 DEMO 中用到了
  20. 例如 [CHECK-断言校验 ](/ability/check.md) 中我们在用例子的 < rule >根标签下直接声明了变量 a、变量 b、变量 c
  21. ```xml copy
  22. <?xml version="1.0" encoding="UTF-8"?>
  23. <rule code="DEMO_Check" name="测试Check校验数据" model="flow">
  24. <params>
  25. <param code="a" name="变量a" dataType="NUMBER" data="1002"/>
  26. <param code="b" name="变量b" dataType="NUMBER" data="1002"/>
  27. <param code="c" name="变量c" dataType="NUMBER" data="100"/>
  28. </params>
  29. </rule>

行为级

🤔 为什么要有行为级的参数声明可以做什么? 例如SQL-执行查询类 如果我们使用用例级参数声明、那么在一次测试用例的运行中就只能链接一个数据库。

  1. 如果我们要在一个测试用例中同时链接多个数据库怎么办?这时就用到行为级参数声明了!!!其中necessarydata参考
  2. <a href="#param声明规则">param声明规则</a>

```xml copy <?xml version=”1.0” encoding=”UTF-8”?>

select from account where acctid = ‘${acctid}’ and exchid = ‘${exchid}’ select from account where acctid = ‘${acctid}’ and exchid = ‘${exchid}’ ### 参数传递 执行到行为的传参学习完行为级参数声明观察 在不同数据库执行相同的 sql 语句我们需要声明两个行为,这是勉强可以接受的,但是面对一下场景就实在难以接受了: 例如在[如何测试下单接口 ](/ability/#如何测试下单接口) 我们需要第二步需要下单、第四步要根据 下单的单号进行查询数据库里的订单信息 在 loadOrder 行为中 声明编码 orderCodexml copy SELECT FROM test_order where code = ‘${orderCode}’ 在 stp4 查询 test_order 信息 获取 第二步 的合同号 传递到 loadOrder 行为的 orderCode 参数声明中xml ## 行为声明 支持 :系统级、项目级、用例级 <div class="centerDiv"> <img class="heardImg" src="/uploads/projects/TestHub/TestHub-doc/src/global/demo/antiocn.png" width="60%"> </div> <div class="centerDiv"> <img class="heardImg" src="/uploads/projects/TestHub/TestHub-doc/src/global/images/global/行为覆盖规则.jpg" width="30%"> </div> ### 用例级 在用例文件 rule->actions 中声明的 就是用例级行为 例如loadMysql查询资金账号、loadOracle查询资金账号xml copy <?xml version=”1.0” encoding=”UTF-8”?> select from account where acctid = ‘${acctid}’ and exchid = ‘${exchid}’ select * from account where acctid = ‘${acctid}’ and exchid = ‘${exchid}’ ### 系统级 🤔理论上我们每步 execute 执行的 actionCode 的编码都是要在用例文件 rule->actions 中声明的 但是[sleep 暂停休息 ](/ability/sleep.md#sleep)中的 sleep 为什么不需要声明呢? 这是因为我们为您已经为您配置了系统级行为sleep 目前系统级行为只能通过系统管理员在数据库中以脚本的方式添加xml <?xml version=”1.0” encoding=”UTF-8”?>

``` 默认系统级行为

| 编码 | 名称 | | ——————————- | —— | | sleep | 休眠 | | check | 校验 | | checkObj | 校验对象 |

项目级

如果您也有需要配置项目级别全局的 action 你可以创建组件库的使用 ,那么你在当前项目中任何一个测试用例中都可以用到了

内置的默认项目配置了默认级行为

| 编码 | 名称 | | ——————————- | —— | | begin | 事务开启 | | commit | 事务提交 |