分享

unittese 运行完清除数据

 小猪窝969 2019-12-12
 def addCleanup(self, function, *args, **kwargs):        """Add a function, with arguments, to be called when the test is
        completed. Functions added are called on a LIFO basis and are
        called after tearDown on test failure or success.

        Cleanup items are called even if setUp fails (unlike tearDown)."""
        self._cleanups.append((function, args, kwargs))

添加针对每个测试用例执行完tearDown()方法之后的清理方法,添加进去的函数按照LIFO的顺序,通过参数添加进去

如果setUp()执行失败,就不会执行tearDown(),自然也不会执行addCleanup()里添加的函数。

使用场景:正常的测试用例,创建资源后,需要清理环境再在用例中删除资源,或者tearDown()后进行资源清理,不方便,如果用了addCleanup()后,直接在用例中写入函数,在tearDown()用例后,会再次调用addCleanup来删除资源,减少代码量以及遗漏删除。


# _*_ encoding:utf-8 _*_

from selenium import webdriver
from selenium.webdriver.common.by import By
import unittest
import time

class Baidu(unittest.TestCase):

def abc(self,a,b):
print(a+b)

def setUp(self):
self.driver = webdriver.Ie()
self.driver.implicitly_wait(10)
self.base_url = 'http://www.baidu.com'
print ("This is setUp")

def test_baidu_search(self):
driver = self.driver
driver.get(self.base_url)
driver.find_element_by_id("kw").send_keys("HTMLTestRunner")
driver.find_element_by_id("su").click()
cleanups = ('abcdefg','123312')
self.addCleanup(self.abc,
cleanups[0], cleanups[1])

def tearDown(self):
self.driver.quit()
print ("This is tearDown")

if __name__ == '__main__':
unittest.main()

执行结果如下,可以看到会在用例结束之后,执行addCleanup里的函数,因此可以用来进行,测试环境数据清理工作。

Ran 1 test in 12.008s

OK

This is tearDown

abcdefg123312

Process finished with exit code 0

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多