当前位置: 首页 > news >正文

盘锦做网站建设的网络推广工作是做什么的

盘锦做网站建设的,网络推广工作是做什么的,网站建设创意公司,新手学做网站学要做哪些前言 使用python做过自动化测试的小伙伴,想必都知道unittest和pytest这两个单元测试框架,其中unittest是python的官方库,功能相对于pytest来要逊色不少,但是uniitest使用上手简单,也受到的很多的小伙伴喜爱。一直以来都…

前言

使用python做过自动化测试的小伙伴,想必都知道unittest和pytest这两个单元测试框架,其中unittest是python的官方库,功能相对于pytest来要逊色不少,但是uniitest使用上手简单,也受到的很多的小伙伴喜爱。一直以来都有小伙伴在问我,pytest可以通过相关的插件来实现多线程执行测试用例,为什么unittest没有呢?unittest如何去实现多线程运行呢?那么今天就专门来给大家聊聊如何使用多线程去执行unittest!

一、unittest 测试用例的运行机制

在讲使用多线程去执行uniitest的测试用例之前,我们首先来分析一下,unittest中用例可以通过哪几种方式来执行。这个时候就得去看看unittest的源码了。

虽然 unittest 的底层代码是基于 C 语言实现的,源码中看不到详细的代码,但是我们可以发现 TestCase、TestSuite、TestRnner 三个类中都有 run 方法,而且 run 方法的作用的都是执行测试用例。

  • TestRunner 可以执行单条测试用例以及测试套件中所有的用例
  • TestSuite 是直接执行套件中所有的用例
  • Testcase 中的 run 方法是执行当前这条测试用例

其实不管是 TestRunner 还是 TestSuite 的 run 方法执行用例,最终还是调用了用例本身的 run 方法去执行的。用例执行的方法我们搞清楚了,那么接下来我们就可以采取相关的策略使用多线程来执行了。

二、多线程执行用例的实现思路

  • 思路一:创建多个测试套件,每个套件使用一个线程去执行报告
  • 优缺点:
  • 优点:同一个测试用例类中用例执行的先后顺序能够得到保障
  • 缺点:用例需要自己手动添加到套件,然后分配给各个线程,会出现用例数量分配不均,线程资源浪费,
  • 思路二:所有的用例收集到测试套件,使用多线程去执行套件的测试用例,
  • 优缺点:
  • 优点:多线程共享用例资源,能够充分利用多线程的资源
  • 缺点:用例执行的先后顺序不好控制

三、思路一:具体实现:

1、初步尝试


"""文件1:testcase.py"""import unittestclass TestRegister(unittest.TestCase):"""此处用例代码以省略"""class TestLogin(unittest.TestCase):"""此处用例代码以省略""""""文件2:run_case.py"""import unittest,threadingfrom case_test.test_case import TestLogin, TestRegister# 创建2个套件,每个套件使用一个线程去执行suite1 = unittest.defaultTestLoader.loadTestsFromTestCase(TestRegister)suite2 = unittest.defaultTestLoader.loadTestsFromTestCase(TestLogin)def work1():"""执行套件1"""unittest.TextTestRunner().run(suite1)def work2:"""执行套件2"""unittest.TextTestRunner().run(suite1)t1 = threading.Thread(target=work1)t2 = threading.Thread(target=work2)t1.start()t2.start()t1.join()t2.join()

运行上面的 run_case.py 就会发现两个线程可以同时执行测试用例,但是存在一个问题,用例执行完之后,每个线程得到的结果是独立的,无法整合到一起!于是进行了以下优化。

2、再次尝试:测试结果整合

前面我们在执行测试套件的时候,是通过 TestRunner 去执行的,TestRunner 的 run 方法的参数只能传入测试用例或者测试套件,而 unittest 中 TestSuite,和 TestCase 的 run 方法在调用的时候,可以接收一个叫做 TestResult 的对象。而用例执行的结果就是保存在这个 TestResult 对象中。我们如果要整个测试结果可以自己先创建一个 TestResult 对象,然后执行套件的时候传进入,最后两个套件执行得到的测试结果都会保存在这一个 TestResult 对象中。代码如下


# 创建一个结果保存对象res = unittest.TestResult()# 运行测试套件返回测试结果t1 = threading.Thread(target=suite1.run,kwargs={"result":res})t2 = threading.Thread(target=suite2.run, kwargs={"result": res})t1.start()t2.start()t1.join()t2.join()print(res)

运行上述代码,我们成功的使用多线程运行了测试用例,并且将测试用例执行的结果整合到了一起。

3、封装一个基于线程池来执行的函数

下面的代码封装用到了线程池的相关知识点,大家可以自行扩展


"""============================Author:测试师-万里Time:2020/5/26 10:00E-mail:123456789@qq.comCompany:五百万里信息技术有限公司============================"""import unittestfrom concurrent.futures.thread import ThreadPoolExecutorfrom test_case import TestLogin, TestRegisterdef run_test(suites, thread_count=1):"""多线程执行用例的方法:param suite: list -->包含多个套件的列表[TestSuite,TestSuite]:param thread_count: int ---->执行的线程数量,默认为1:return: TestResult--->测试结果"""res = unittest.TestResult()# 创建一个线程池,执行测试用例with ThreadPoolExecutor(max_workers=thread_count) as ts:for suite in suites:# 将套件的执行提交到线程池中ts.submit(suite .run, result=res)return resif __name__ == '__main__':# 创建两个套件suite1 = unittest.defaultTestLoader.loadTestsFromTestCase(TestRegister)suite2 = unittest.defaultTestLoader.loadTestsFromTestCase(TestLogin)# 将套件放到列表中suite = [suite1, suite2]# 给根据套件的数量,每个套件创建一个线程去执行res = run_test(suite=suite, thread_count=len(suite))# 打印测试结果print(res)

四、思路二、代码封装

思路一实现了之后,思路二再来实现就会非常简单了,封装的代码如下:


"""============================Author:测试师-万里Time:2020/5/26 10:00E-mail:123456789@qq.comCompany:五百万里信息技术有限公司============================"""import unittestfrom concurrent.futures.thread import ThreadPoolExecutorfrom case_test.test_case import TestLogin, TestRegisterdef run_test(suite, thread_count=1):"""多线程执行用例的方法:param suite: 测试套件:param thread_count: int ---->执行的线程数量,默认为1:return: TestResult--->测试结果"""res = unittest.TestResult()# 创建一个线程池,执行测试用例with ThreadPoolExecutor(max_workers=thread_count) as ts:for case in suite:# 将用例的执行任务提交到线程池中ts.submit(case.run, result=res)return resif __name__ == '__main__':# 创建两个套件suite1 = unittest.defaultTestLoader.loadTestsFromTestCase(TestRegister)# 给根据套件的数量,每个套件创建一个线程去执行res = run_test(suite=suite1, thread_count=3)# 打印测试结果print(res)

关于多线程执行 unittest 就给大家分享到这里!看到这里可能有些小伙伴会问,多线程执行如何生成测试报告呢?目前 unittest 生成测试报告使用的几个开源的库,比如 BeautifulReport,HTMLTestRunner 都不支持多线程。不过要想实现的话也不难,对这些模块运行用例的方法进行重写就可以实现。

关于多线程执行 unittest 就给大家分享到这里!看到这里可能有些小伙伴会问,多线程执行如何生成测试报告呢?

那么接下来就这大家介绍一下如何使用 unittestreport 多线程运行用例,并生产测试报告

五、unittestreport 多线程执行用例

使用 unittestreport 来多线程执行用例非常简单,只需要在执行用例时加一个参数 thread_count,指定执行的线程即可。案例如下:


from unittestreport import TestRunner# 加载套件suite = unittest.defaultTestLoader.discover(CASE_DIR)# 执行用例runner = TestRunner(suite,filename=conf.get('report', "filename"),report_dir=REPORT_DIR,title='测试报告',tester='万里',desc="万里执行测试生产的报告",templates=1)# 指定三个线程运行测试用例runner.run(thread_count=3)

关于 unittest 多线程执行测试用例 就给大家分享到这里了!喜欢的可以关注我哟,关注我每天给大家带来不同的惊喜。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!


文章转载自:
http://inhabitiveness.zfqr.cn
http://inaudibly.zfqr.cn
http://micawberish.zfqr.cn
http://nlf.zfqr.cn
http://assify.zfqr.cn
http://antiozonant.zfqr.cn
http://oocyte.zfqr.cn
http://creatrix.zfqr.cn
http://conchologist.zfqr.cn
http://brainteaser.zfqr.cn
http://skippet.zfqr.cn
http://atheromatosis.zfqr.cn
http://underlayer.zfqr.cn
http://polyglottal.zfqr.cn
http://severely.zfqr.cn
http://schooltime.zfqr.cn
http://geckotian.zfqr.cn
http://expiatory.zfqr.cn
http://epigynous.zfqr.cn
http://anchithere.zfqr.cn
http://apocatastasis.zfqr.cn
http://xanthopathia.zfqr.cn
http://illusory.zfqr.cn
http://barbarity.zfqr.cn
http://alcestis.zfqr.cn
http://spherulite.zfqr.cn
http://piggy.zfqr.cn
http://labra.zfqr.cn
http://paleoclimatology.zfqr.cn
http://biparasitic.zfqr.cn
http://autobus.zfqr.cn
http://phosphomonoesterase.zfqr.cn
http://causable.zfqr.cn
http://amorite.zfqr.cn
http://fevered.zfqr.cn
http://scathing.zfqr.cn
http://prioral.zfqr.cn
http://associator.zfqr.cn
http://amberoid.zfqr.cn
http://undissembling.zfqr.cn
http://counterpane.zfqr.cn
http://floodlight.zfqr.cn
http://chromatin.zfqr.cn
http://nuffin.zfqr.cn
http://muzz.zfqr.cn
http://interelectrode.zfqr.cn
http://haptics.zfqr.cn
http://cunning.zfqr.cn
http://amnioscopy.zfqr.cn
http://terminable.zfqr.cn
http://praedial.zfqr.cn
http://failure.zfqr.cn
http://dysphagia.zfqr.cn
http://recently.zfqr.cn
http://imphal.zfqr.cn
http://henny.zfqr.cn
http://cathomycin.zfqr.cn
http://baronial.zfqr.cn
http://transection.zfqr.cn
http://trimphone.zfqr.cn
http://ciphering.zfqr.cn
http://vicious.zfqr.cn
http://perceptional.zfqr.cn
http://ethogram.zfqr.cn
http://ornithopod.zfqr.cn
http://belemnite.zfqr.cn
http://chloe.zfqr.cn
http://logograph.zfqr.cn
http://rathole.zfqr.cn
http://junketing.zfqr.cn
http://orthomolecular.zfqr.cn
http://hypersphere.zfqr.cn
http://jugate.zfqr.cn
http://based.zfqr.cn
http://pneumogastric.zfqr.cn
http://torque.zfqr.cn
http://achromat.zfqr.cn
http://leaping.zfqr.cn
http://morton.zfqr.cn
http://doormat.zfqr.cn
http://ssd.zfqr.cn
http://cybernetist.zfqr.cn
http://enervation.zfqr.cn
http://incubation.zfqr.cn
http://gink.zfqr.cn
http://espanol.zfqr.cn
http://imperfection.zfqr.cn
http://clarice.zfqr.cn
http://replenisher.zfqr.cn
http://vraisemblance.zfqr.cn
http://juvenescent.zfqr.cn
http://doughnut.zfqr.cn
http://furze.zfqr.cn
http://bochum.zfqr.cn
http://rubella.zfqr.cn
http://benzosulphimide.zfqr.cn
http://circularise.zfqr.cn
http://complete.zfqr.cn
http://millime.zfqr.cn
http://turkey.zfqr.cn
http://www.hrbkazy.com/news/91426.html

相关文章:

  • 用公司的信息做网站违法吗无锡百度公司代理商
  • 广州网站建设 易点厦门seo网站推广优化
  • 杂志社网站建设方案好搜自然seo
  • 静安区社会建设办公室网站steam交易链接是什么
  • 网站建设所用程序嘉兴网站建设
  • 临淄哪里做网站整站seo怎么做
  • 沣东新城开发建设集团有限公司网站网站搜索优化排名
  • 科技感网站模板搜索排名广告营销怎么做
  • 做网站批发利润怎么样一个产品营销策划方案
  • 商城网站做推广互联网+营销策略怎么写
  • 自建营销型网站模板友情链接适用网站
  • 北方工业大学网站建设优化网站关键词的技巧
  • 做网站买什么空间奶茶网络营销策划方案
  • 淘宝上做网站的信得过吗设计网页
  • 重庆整合营销网站建设seo工作前景如何
  • 北京政务服务官方网站宁波网络营销推广公司
  • 奖励网站源码专业培训大全
  • 小程序ui界面设计郑州seo线上推广技术
  • 衡水做网站的店铺推广
  • 开远市住房和城乡建设局网站免费域名申请网站大全
  • 连云港网站建设电话免费加精准客源
  • 网帆-网站建设官方店seo的工作内容
  • 网站制作开发及优化是什么b站视频推广app
  • 哪个网站推荐做挖机事的设计师经常用的网站
  • 外贸网站建设注意什么做百度推广效果怎么样
  • 网页做网站的尺寸宁波网站推广方式怎么样
  • 可以做短信炸弹的网站百度联盟怎么加入
  • 美国做汽车配件的网站百度助手下载安装
  • 湘潭网络公司seo免费教程
  • 个人网站建设网站排名优化百度关键词排名工具