seldom学习(八):其他用法
2020-05-14 本文已影响0人
一如既往而已
一、 seldom 跳过测试用例
seldom 通过main()
方法运行测试用例只能指定到测试文件,但有时候我们一个测试文件可能会有很多测试类和方法。但在调试过程中之想执行某一部分用例,那么就可以设置用例的跳过。
import seldom
@seldom.skip() # 跳过测试类
class YouTest(seldom.TestCase):
@seldom.skip() # 跳过测试用例
def test_case(self):
# ...
if __name__ == '__main__':
seldom.main()
你可以通过 skip()
装饰器设置要跳过的测试类或用例。
二、seldom 发邮件功能
如果你想将测试完成的报告发送到指定邮箱,那么可以调用发邮件的方法实现。
import seldom
from seldom.mail import SMTP
class Test(seldom.TestCase):
def test_case(self):
self.get("http://www.baidu.com")
self.type(css="#kw", text="seldom")
self.click(css="#su")
self.wait(2)
self.assertTitle("seldom_百度搜索")
if __name__ == '__main__':
seldom.main()
smtp = SMTP(user="you@126.com", password="abc123", host="smtp.126.com")
smtp.sender(to="receive@mail.com")
如果你自定义了报告的名称,那么需要指定报告名称。
import seldom
from seldom.mail import SMTP
# ……
if __name__ == '__main__':
report_path = "/you/path/to/report.html"
seldom.main(report_name=report_path)
smtp = SMTP(user="you@126.com", password="abc123", host="smtp.126.com")
smtp.sender(to="receive@mail.com", attachments=report_path)
自动化发邮件不支持
debug
模式,debug
模式不会生成测试报告,自然也无法将报告发送到指定邮箱了。
如何设置前置步骤
在编写自动化测试用例的过程中,我们需要设置前置步骤。这时候就需要将一些前置动作放到setUp/setUpClass
中。
setUp使用
当你想在每条用例开始之前执行的动作,放到setUp()
方法中。
import seldom
class TestCase(seldom.TestCase):
def setUp(self):
self.get("https://www.baidu.com")
def test_search_seldom(self):
self.type_enter(id_="kw", text="seldom")
self.assertTitle("seldom_百度搜索")
def test_search_poium(self):
self.type_enter(id_="kw", text="poium")
self.assertTitle("poium_百度搜索")
#...
三、setUpClass使用
有些用例需要在测试类开始之前执行一些动作,这个时候就会用到setUpClass()
类方法。
import seldom
class TestCase(seldom.TestCase):
@classmethod
def setUpClass(cls):
cls.get(cls, "https://www.baidu.com")
cls.type(cls, id_="kw", text="setupclass")
cls.click(cls, id_="su")
cls.sleep(2)
def test_get_search_result(self):
result = self.get_text(xpath="//div/h3/a", index=0)
print(result)
if __name__ == '__main__':
seldom.main(debug=True)
setUpClass()
方法比较特殊,在它下面编写测试步骤,需要注意两点:
- 类方法以
cls
前缀。 - 调用的方法第一个参数需要传
cls
参数
总之,并不推荐你把用例的操作步骤 setUpClass()
方法中。