找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
# 28、我们之前写的脚本叫线性脚本,现在需要封装
# from selenium import webdriver
# from time import sleep
# driver = webdriver.Chrome()
#
# driver.get('http://cms.duoceshi.cn/cms/manage/login.do')
# driver.maximize_window()
# driver.find_element_by_id('userAccount').send_keys('admin')
# driver.find_element_by_id('loginPwd').send_keys('123456')
# driver.find_element_by_id('loginBtn').click()

# from selenium import webdriver
# from time import sleep
# driver = webdriver.Chrome()
# class Cms:
#     def __init__(self):    #构造函数
#         self.driver = webdriver.Chrome()
#         self.driver.get('http://cms.duoceshi.cn/cms/manage/login.do')
#         self.driver.maximize_window()
#
#     def login(self):
#         '''
#         封装一个登录函数
#         :return:
#         '''
#         self.driver.find_element_by_id('userAccount').send_keys('admin')
#         self.driver.find_element_by_id('loginPwd').send_keys('123456')
#         self.driver.find_element_by_id('loginBtn').click()
#         sleep(3)
#     def center(self):
#         '''
#         封装一个操作用户中心
#         :return:
#         '''
#         self.driver.find_element_by_xpath('//*[@id="menu-user"]/dt').click()
#
# if __name__ == '__main__':
#     c = Cms()     #创建一个对象c
#     c.login()
#     c.center()

# 29、为了解决用例分离的问题,我们要引入unittest单元测试框架
# python中里面有哪些单元测试框架?
# unittest pytest nose junit
# unittest 单元测试框架作用:测试主要用来组织和管理我们的ui自动化用例

# 类的开始
# 方法的开始
# 用例1运行
# 方法的结束
# 方法的开始
# 用例2运行
# 方法结束
# 类的结束


# import unittest       #导入这个unittest模块
#
# # unittest 单元测试框架基本格式
#
# class Test(unittest.TestCase):
#
#     @classmethod     # 装饰器,不影响原有的功能,增加新功能,只会运行一次
#     def setUpClass(cls) -> None:         # 类的开始
#         print('类的开始')
#
#     @classmethod
#     def tearDownClass(cls) -> None:     #类的结束
#         print('类的结束')
#
#     def setUp(self) -> None:       #在每个方法运行之前都会运行一遍,释放资源,关闭浏览器
#         print('方法的开始')
#
#     def tearDown(self) -> None:
#         print('方法的结束')
#
#     def test02(self):
#         print(222)
#
#     def test01(self):
#         print(111)
#
#     def test_a(self):
#         print(444)
#
#     def test_B(self):
#         print(333)
#
#     def dcs(self):      #这个不会运行不是test开头
#         print(555)

# # 运行结果解释:
# # unittest框架运行的用例是要以test开头,运行顺序是根据ASCII排序先数字--大写字母--
# # 小写字母 ,unittest框架有setup  和teardown 开始和结束的工作,释放资源
#
# if __name__ == '__main__':
#     unittest.main()       #unittest 框架是运行用例的入口,main是函数,作用就是
#                           #运行所有的用例


# 需求:百度搜python和selenium
import unittest
from selenium import webdriver
from time import sleep
from dcs7_auto_ui.HTMLTestRunner3_New import HTMLTestRunner

class Baidu_Test(unittest.TestCase):
    def setUp(self) -> None:              #方法的开始
        self.driver = webdriver.Chrome()
        self.driver.get('http://www.baidu.com')
        self.driver.maximize_window()
        self.driver.implicitly_wait(10)

    def tearDown(self) -> None:          #方法的结束
        sleep(5)
        self.driver.close()    #退出浏览器

    def test01(self):
        self.driver.find_element_by_id('kw').send_keys('python')

    def test02(self):
        self.driver.find_element_by_id('kw').send_keys('selenium')

#第一种运行方法所有的用例
# if __name__ == '__main__':
        # unittest.main()


#第二种方法:把用例装进一个套件里面
# def all_case():
#     suite = unittest.TestSuite()     #创建一个suite对象,就像一个容器一样,用来装测试用来
#     # 1)运行单条用例
#     # suite.addTest(Baidu_Test('test01'))
#     # suite.addTest(Baidu_Test('test02'))
#     #把test01这个用例装进suite套件里面
#
#     # 2)运行多条用例
#     suite.addTests([Baidu_Test('test01'),Baidu_Test('test02')])
#     return suite       #把装好的用例suite套件返回给到函数,谁调用了函数谁就拿到了结果
#
# if __name__ == '__main__':
#     # 第二种方法运行套件里面的用例
#     runner = unittest.TextTestRunner()  #根据TextTestRunner类创建一个runner对象
#     # 然后runner调用run运行用例
#     runner.run(all_case())


# 第三种运行用例的方法
# 运行用例:自动化搜索用例+自动运行+生成测试报告
if __name__ == '__main__':
    start_dir = 'C:\my_project\dcs\dcs7_auto_ui'   #找用例的路径
    filename = r'C:\my_project\dcs\dcs7_auto_ui'+'\\ui_report.html'   #存放报告文件的路径及报告名称
    f = open(filename,'wb')    #wb 是二进制的方式往filename文件里面写入用例运行后的报告
    discover = unittest.defaultTestLoader.discover(start_dir,pattern='lesson*.py')
    # defaultTestLoader是TestLoader类的对象,
    #自动化搜索用例# discover 方法会自动化搜索指定的路径以lesson开
    # 头并且以.py结尾的模块以test开头的用例
    runner = HTMLTestRunner(stream=f,title='百度ui自动化测试报告',
                            description='用例执行情况如下:',tester='小段')
    runner.run(discover)    #运行用例


分享至 : QQ空间
收藏
您需要登录后才可以回帖 登录 | 立即注册