记几条--用例注意事项:
用例从功能里面转化而来,并且不能脱离业务(针对某一个页面功能某一个流程业务,写一条用例:即将界面操作间接转化为代码去操作!)
1用例要尽量独立,相互不影响!(单独一条都可运行)---尽量降低耦合度
2如果是同一个功能或者页面的几个元素, 建议可以封装为一个类
3接着第2点,封装好的每个类都是一个测试点 (如:输入参数不一样,就如同一个功能的正常和异常的测试)
4每个用例的class类名:建议按照:驼峰命名(LoginSignName),并且都默认继承unittest.TestCase类:
class TestLogin(unittest.TestCase):
5(可以选填前置setup和后置teardowm,没有的话可以写pass)
注意:在用例里面可以加入使用@classmethod类装饰器:
如:
@classmethod
def setupclass(cls): #------所有用例之前执行,仅执行一次
cls.driver=webdriver.Firefox()
cls.lo=Login(cls.driver)
def setup(self): #------每条用例前执行,每条用例前都会执行一次
self.driver.get(url)
self.driver.refresh()#刷新浏览器
def teardown(self):#-----每条用例之后执行,每条用例结束都会执行一次
self.driver.delete_all_cookies()#清除浏览器缓存cookie
@classmethod
def teardownclass(cls):#------所有用例结束后执行,仅执行一次
cls.driver.quit()##关闭浏览器
ps:一般用于比如:只启动一次浏览器,最后关闭浏览器及清理缓存(而setup和teardown一般用于执行的前置条件或者后置
6内部的每个case都要test开头(如test_case01)原因:用例执行顺序是按ASCII码先后顺序执行
7每个用例都要有assert断言(没有assert断言那么这个用例 如同是伪用例)
8用例里面加入判断时,直接使用EC模块即:expected_conditions,这个selenium自己带的异常分析模块里面的方法即可!!!
注意!!!用例class类里面,不要用def __ init__这个构造方法。只在功能函数里面使用,用例只用来写功能的测试case不存在要去使用构造函数或者其他