TA的每日心情 | 擦汗 4 天前 |
---|
签到天数: 1042 天 连续签到: 4 天 [LV.10]测试总司令
|
1、seldom 实现Page objects设计模式
seldom API的设计理念已经将元素操作和元素定位做了整合,本身不太适合实现Page objects设计模式。poium 是Page objects设计模式最佳实践,如果想使用poium,需要单独安装。
将seldom与poium结合使用。
import seldom
from seldom import Seldom
from poium import Page, PageElement
class BaiduPage(Page):
"""baidu page"""
search_input = PageElement(id_="kw")
search_button = PageElement(id_="su")
class BaiduTest(seldom.TestCase):
"""Baidu serach test case"""
def test_case(self):
"""
A simple test
"""
page = BaiduPage(Seldom.driver)
page.get("https://www.baidu.com")
page.search_input = "seldom"
page.search_button.click()
self.assertTitle("seldom_百度搜索")
if __name__ == '__main__':
seldom.main()
2、seldom 生成测试数据
测试数据是测试用例的重要部分。但有时候我们不能把测试数据写死在测试用例中,seldom在testdata中__init__.py提供了随机获取测试数据的方法。
first_name() #名
last_name() #姓
username() #用户名
get_birthday() #生日
get_date() #当前时间
get_digits() #复数
get_email() #emali
get_float() #随机浮点数
get_future_datetime() #未来时间
get_int() #数字
get_int32() #32位的正数字
get_int64() #64位的正数字
get_md5() #md5值
get_now_time() #当前时间
get_past_datetime() #过去时间
get_uuid() #uuid
get_word() #一个单词
get_words() #多个单词
import seldom
from seldom import testdata
class YouTest(seldom.TestCase):
def test_case(self):
#通过get_word() 随机获取一个单词,然后对这个单词进行搜索。
word = testdata.get_word()
self.open("https://www.baidu.com")
self.type(id_="kw", text=word)
self.click(css="#su")
self.assertTitle(word + "_百度搜索")
if __name__ == '__main__':
seldom.main()
3、seldom 跳过测试用例
seldom 通过main()方法运行测试用例只能指定到测试文件,但有时候我们一个测试文件可能会有很多测试类和方法。但在调试过程中之想执行某一部分用例,那么就可以设置用例的跳过。
import seldom
from seldom import testdata
@seldom.skip() # 跳过测试类
class YouTest(seldom.TestCase):
@seldom.skip() # 跳过测试用例
def test_case(self):
#通过get_word() 随机获取一个单词,然后对这个单词进行搜索。
word = testdata.get_word()
self.open("https://www.baidu.com")
self.type(id_="kw", text=word)
self.click(css="#su")
self.assertTitle(word + "_百度搜索")
if __name__ == '__main__':
seldom.main()
4、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", subject='Email title')
这里需要注意你的邮件服务器端口是什么,seldom中没有对特定的邮箱服务器做处理:
seldom中的实现如下:
class SMTP(object):
def __init__(self, user, password, host, port=None):
self.user = user
self.password = password
self.host = host
self.port = str(port) if port is not None else "465"
def sender(self, to=None, subject=None, contents=None, attachments=None):
.......
.......
try:
smtp = smtplib.SMTP()
smtp.connect(self.host)
smtp.login(self.user, self.password)
smtp.sendmail(self.user, to, msg.as_string())
smtp.quit()
log.info(" ?? Email sent successfully!!")
except BaseException as msg:
log.error('? Email failed to send!!' + str(msg))
python标准库中的smtplib模块,给我们提供了一组连接SMTP服务器发送邮件的接口。
#连接SMTP服务器未加密的25号端口,使用smtplib.SMTP接口;
smtp = smtplib.SMTP()
smtp.connect(self.host,self.prot)
smtp.login(self.user, self.password)
#连接SMTP服务器SSL加密的465端口,使用smtplib.SMTP_SSL接口;
smtp = smtplib.SMTP_SSL(self.host,self.prot)
smtp.login(self.user, self.password)
#连接TLS的587端口,使用smtplib.SMTP接口;
smtp = smtplib.SMTP(self.host, self.prot)
smtp.starttls()
smtp.login(self.user, self.password)
5、seldom设置前置步骤
在编写自动化测试用例的过程中,我们需要设置前置步骤。这时候就需要将一些前置动作放到case.py中的start()/start_class()中,将一些前置动作放到case.py中的end()/end_class()中。
5.1、当你想在每条用例开始之前执行的动作,放到start()/end()方法中。
import seldom
class TestCase(seldom.TestCase):
def start(self):
print("一条测试用例开始")
self.get("https://www.baidu.com")
def end(self):
print("一条测试结果")
self.assertInTitle("百度搜索")
def test_search_seldom(self):
self.type_enter(id_="kw", text="seldom")
def test_search_poium(self):
self.type_enter(id_="kw", text="poium")
#...
5.2、当你想在测试类开始之前执行一些动作,到start_class()/end_class()类方法。
import seldom
class TestCase(seldom.TestCase):
def start_class(self):
print("测试类开始执行")
self.get("https://www.baidu.com")
def end_class(self):
print("测试类结束执行")
self.assertInTitle("百度搜索")
def test_search_seldom(self):
self.type_enter(id_="kw", text="seldom", clear=True)
def test_search_poium(self):
self.type_enter(id_="kw", text="poium", clear=True)
|
|