其他测试框架 java+dubbo+testng 接口自动化,1500 条 case 允许时间 14 小时左右,有大佬有比较好的解决方法吗

差班生 · 2023年06月19日 · 最后由 陈先生 回复于 2023年07月07日 · 11298 次阅读

框架用了 GenericService 泛化调用,但是每个 test 在运行时会吧全部的 Bean 都加载一遍,太费时间了。有什么比较好的解决方法吗?

共收到 9 条回复 时间 点赞

beforeClass 是多少测试类就跑多少次,所以会多次加载。把 beforeClass 换成 beforeSuite,保证初始化一次执行只跑一次就行。或者 genericService 换成懒加载单例,不在初始化里面生成实例而是用例里面去取实例。

mai #1 回复

谢谢,懒加载单例是指,用到就去生成实例?不用就不生成吗?

你们不和 spring 集成么?把 rpc 接口注册成 bean 就行了

我这边是通过配置 package,然后扫描所有的类,然后统一创建 rpc 调用对象放入 spring 容器里面。设置懒加载之后,直接注入就可以用了。后续如果有新增的 rpc 接口 更新下 jar 包就可以用了

lumen #3 回复

目前没有和 spring 集成,很尴尬,所以 case 运行时间很长。整个脚本初始化第一次完成加载之后,每个 test 不需要单独加载一份了吧?

差班生 #8 回复

对,这样你 setup 里面就没必要去初始化 genericService 了,你一次跑用例也不会全部接口都跑吧?

mai #5 回复

不会的。可能会调用多个接口。全部跑完不可能的。

不会 java,我用 python 的getattribute实现,你看看 java 有没有类似的方法

class LoginApi():
    # 登录接口实现
    def login(self,):
        pass


class ApiInit:
    # 接口映射
    login = LoginApi

    # 设置属性拦截
    def __getattribute__(self, item):
        # 返回实例化的接口对象
        return object.__getattribute__(self,item)()

# 实例化ApiInit
api = ApiInit()
# 接口只会在每次调用时才会实例化
api.login.login()

多线程啊,testng 本来就支持多线程,配置下就行

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册