<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 測試用例優化 * [引入單元測試框架](http://brtc.imsam.cn/1380706#_95) * [封裝公共部分](http://brtc.imsam.cn/1380706#_198) * [使用setUp和tearDown優化](http://brtc.imsam.cn/1380706#setUptearDown_236) * [斷言](http://brtc.imsam.cn/1380706#_273) * [封裝到public中](http://brtc.imsam.cn/1380706#public_342) 之前我們所寫的是線性代碼 ~~~ #coding=utf-8 # @Author: SamWang # @Date: 2019-11-15 16:33:56 # @Last Modified time: 2019-11-16 10:42:48 from selenium import webdriver from time import sleep # 登錄成功 d = webdriver.Chrome() d.maximize_window() d.implicitly_wait(10) d.get('http://os-201804081018/blog/wp-login.php') d.find_element_by_css_selector('#user_login').send_keys('test') sleep(1) d.find_element_by_css_selector('#user_pass').send_keys('test123') sleep(1) d.find_element_by_css_selector('#wp-submit').click() sleep(1) login_msg = d.find_element_by_css_selector('#wp-admin-bar-my-account').text if 'test' in login_msg: print('登錄成功用例:pass') else: print('登錄成功用例:fail') d.close() d.quit() # 用戶名為空密碼正確填寫,登錄失敗 d = webdriver.Chrome() d.maximize_window() d.implicitly_wait(10) d.get('http://os-201804081018/blog/wp-login.php') d.find_element_by_css_selector('#user_login').send_keys('') sleep(1) d.find_element_by_css_selector('#user_pass').send_keys('test123') sleep(1) d.find_element_by_css_selector('#wp-submit').click() sleep(1) login_msg = d.find_element_by_css_selector('#login_error').text if '用戶名一欄為空' in login_msg: print('用戶名為空密碼正確填寫,登錄失敗:pass') else: print('用戶名為空密碼正確填寫,登錄失敗:fail') d.close() d.quit() # 密碼為空用戶名正確填寫,登錄失敗 d = webdriver.Chrome() d.maximize_window() d.implicitly_wait(10) d.get('http://os-201804081018/blog/wp-login.php') d.find_element_by_css_selector('#user_login').send_keys('test') sleep(1) d.find_element_by_css_selector('#user_pass').send_keys('') sleep(1) d.find_element_by_css_selector('#wp-submit').click() sleep(1) login_msg = d.find_element_by_css_selector('#login_error').text if '密碼一欄為空' in login_msg: print('密碼為空用戶名正確填寫,登錄失敗:pass') else: print('密碼為空用戶名正確填寫,登錄失敗:fail') d.close() d.quit() # 用戶名正確密碼錯誤時,登錄失敗 d = webdriver.Chrome() d.maximize_window() d.implicitly_wait(10) d.get('http://os-201804081018/blog/wp-login.php') d.find_element_by_css_selector('#user_login').send_keys('test') sleep(1) d.find_element_by_css_selector('#user_pass').send_keys('tes222t123') sleep(1) d.find_element_by_css_selector('#wp-submit').click() sleep(1) login_msg = d.find_element_by_css_selector('#login_error').text if '密碼不正確' in login_msg: print('用戶名正確密碼錯誤時,登錄失敗:pass') else: print('用戶名正確密碼錯誤時,登錄失敗:fail') d.close() d.quit() ~~~ > ### 引入單元測試框架 ~~~ #coding=utf-8 # @Author: SamWang # @Date: 2019-11-15 16:33:56 # @Last Modified time: 2019-11-16 10:45:53 from selenium import webdriver from time import sleep import unittest class mytest(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def test_login_success(self): # 登錄成功 d = webdriver.Chrome() d.maximize_window() d.implicitly_wait(10) d.get('http://os-201804081018/blog/wp-login.php') d.find_element_by_css_selector('#user_login').send_keys('test') sleep(1) d.find_element_by_css_selector('#user_pass').send_keys('test123') sleep(1) d.find_element_by_css_selector('#wp-submit').click() sleep(1) login_msg = d.find_element_by_css_selector('#wp-admin-bar-my-account').text if 'test' in login_msg: print('登錄成功用例:pass') else: print('登錄成功用例:fail') d.close() d.quit() def test_login_username_empty(self): # 用戶名為空密碼正確填寫,登錄失敗 d = webdriver.Chrome() d.maximize_window() d.implicitly_wait(10) d.get('http://os-201804081018/blog/wp-login.php') d.find_element_by_css_selector('#user_login').send_keys('') sleep(1) d.find_element_by_css_selector('#user_pass').send_keys('test123') sleep(1) d.find_element_by_css_selector('#wp-submit').click() sleep(1) login_msg = d.find_element_by_css_selector('#login_error').text if '用戶名一欄為空' in login_msg: print('用戶名為空密碼正確填寫,登錄失敗:pass') else: print('用戶名為空密碼正確填寫,登錄失敗:fail') d.close() d.quit() def test_login_password_empty(self): # 密碼為空用戶名正確填寫,登錄失敗 d = webdriver.Chrome() d.maximize_window() d.implicitly_wait(10) d.get('http://os-201804081018/blog/wp-login.php') d.find_element_by_css_selector('#user_login').send_keys('test') sleep(1) d.find_element_by_css_selector('#user_pass').send_keys('') sleep(1) d.find_element_by_css_selector('#wp-submit').click() sleep(1) login_msg = d.find_element_by_css_selector('#login_error').text if '密碼一欄為空' in login_msg: print('密碼為空用戶名正確填寫,登錄失敗:pass') else: print('密碼為空用戶名正確填寫,登錄失敗:fail') d.close() d.quit() def test_login_password_error(self): # 用戶名正確密碼錯誤時,登錄失敗 d = webdriver.Chrome() d.maximize_window() d.implicitly_wait(10) d.get('http://os-201804081018/blog/wp-login.php') d.find_element_by_css_selector('#user_login').send_keys('test') sleep(1) d.find_element_by_css_selector('#user_pass').send_keys('tes222t123') sleep(1) d.find_element_by_css_selector('#wp-submit').click() sleep(1) login_msg = d.find_element_by_css_selector('#login_error').text if '密碼不正確' in login_msg: print('用戶名正確密碼錯誤時,登錄失敗:pass') else: print('用戶名正確密碼錯誤時,登錄失敗:fail') d.close() d.quit() if __name__ == '__main__': unittest.main() ~~~ > ### 封裝公共部分 ~~~ from selenium import webdriver from time import sleep import unittest def login_action(d,username,password): d.get('http://os-201804081018/blog/wp-login.php') d.find_element_by_css_selector('#user_login').send_keys(username) sleep(1) d.find_element_by_css_selector('#user_pass').send_keys(password) sleep(1) d.find_element_by_css_selector('#wp-submit').click() sleep(1) class mytest(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def test_login_success(self): # 登錄成功 d = webdriver.Chrome() d.maximize_window() d.implicitly_wait(10) login_action(d=d,username='test',password='test123')# 調用登錄函數 login_msg = d.find_element_by_css_selector('#wp-admin-bar-my-account').text if 'test' in login_msg: print('登錄成功用例:pass') else: print('登錄成功用例:fail') d.close() d.quit() ~~~ > ### 使用setUp和tearDown優化 ~~~ from selenium import webdriver from time import sleep import unittest def login_action(d,username,password): d.get('http://os-201804081018/blog/wp-login.php') d.find_element_by_css_selector('#user_login').send_keys(username) sleep(1) d.find_element_by_css_selector('#user_pass').send_keys(password) sleep(1) d.find_element_by_css_selector('#wp-submit').click() sleep(1) #同一個類下,如果該方法的變量想要能夠被其他方法所使用,則在定義變量時,加上一個self. class mytest(unittest.TestCase): def setUp(self): self.d = webdriver.Chrome() self.d.maximize_window() self.d.implicitly_wait(10) def tearDown(self): self.d.close() self.d.quit() def test_login_success(self): # 登錄成功 login_action(d=self.d,username='test',password='test123')# 調用登錄函數 login_msg = self.d.find_element_by_css_selector('#wp-admin-bar-my-account').text if 'test' in login_msg: print('登錄成功用例:pass') else: print('登錄成功用例:fail') ~~~ > ### 斷言 斷言 (判斷實際結果與預期結果是否相符) | 斷言方式 | 作用 | | --- | --- | | self.assertIn(a,b) | 判斷 a 是不是 in b | | self.assertNotIn(a,b) | 判斷 a 是不是 not in b | | self.assertEqual(a,b) | 判斷 a 是不是 等于 b | | self.assertNotEqual(a,b) | 判斷 a 是不是 不等于 b | ~~~ from selenium import webdriver from time import sleep import unittest def login_action(d,username,password): d.get('http://os-201804081018/blog/wp-login.php') d.find_element_by_css_selector('#user_login').send_keys(username) sleep(1) d.find_element_by_css_selector('#user_pass').send_keys(password) sleep(1) d.find_element_by_css_selector('#wp-submit').click() sleep(1) #同一個類下,如果該方法的變量想要能夠被其他方法所使用,則在定義變量時,加上一個self. class mytest(unittest.TestCase): def setUp(self): self.d = webdriver.Chrome() self.d.maximize_window() self.d.implicitly_wait(10) def tearDown(self): self.d.close() self.d.quit() def test_login_success(self): # 登錄成功 login_action(d=self.d,username='test',password='test123')# 調用登錄函數 login_msg = self.d.find_element_by_css_selector('#wp-admin-bar-my-account').text self.assertIn('test',login_msg) def test_login_username_empty(self): #用戶名為空密碼正確填寫,登錄失敗 login_action(d=self.d,username='',password='test123')# 調用登錄函數 login_msg = self.d.find_element_by_css_selector('#login_error').text self.assertIn('用戶名一欄為空',login_msg) def test_login_password_empty(self): # 密碼為空 login_action(d=self.d,username='test',password='')# 調用登錄函數 login_msg = self.d.find_element_by_css_selector('#login_error').text self.assertIn('密碼一欄為空',login_msg) def test_login_password_error(self): # 用戶名正確密碼錯誤時,登錄失敗 login_action(d=self.d,username='test',password='te124st123')# 調用登錄函數 login_msg = self.d.find_element_by_css_selector('#login_error').text self.assertIn('密碼不正確',login_msg) if __name__ == '__main__': unittest.main() ~~~ > ### 封裝到public中 如果當前腳本的函數,需要被其他腳本所引用,那么我們就需要創建一個public來存放這些共用的函數.模塊 比如將登陸的login\_action函數封裝到public中 1、在testcase文件夾下創建一個`public.py`的文件 ![](https://img.kancloud.cn/37/f8/37f80e9d5823a6f361ca1ab2fb06d538_628x361.png) 2、將login\_case.py中的登錄函數移動到public.py上 ![](https://img.kancloud.cn/ee/19/ee190de6af19282256a3a060923c23a5_1038x369.png) 3、 修改login\_case.py的調用方式 ![](https://img.kancloud.cn/e8/18/e81854545a943151e8caf0b7c12ee0c6_764x241.png) 修改后的`login_case.py`代碼如下 ~~~ from selenium import webdriver from time import sleep import unittest from public import login_action #同一個類下,如果該方法的變量想要能夠被其他方法所使用,則在定義變量時,加上一個self. class mytest(unittest.TestCase): def setUp(self): self.d = webdriver.Chrome() self.d.maximize_window() self.d.implicitly_wait(10) def tearDown(self): self.d.close() self.d.quit() def test_login_success(self): # 登錄成功 login_action(d=self.d,username='test',password='test123')# 調用登錄函數 login_msg = self.d.find_element_by_css_selector('#wp-admin-bar-my-account').text self.assertIn('test',login_msg) def test_login_username_empty(self): #用戶名為空密碼正確填寫,登錄失敗 login_action(d=self.d,username='',password='test123')# 調用登錄函數 login_msg = self.d.find_element_by_css_selector('#login_error').text self.assertIn('用戶名一欄為空',login_msg) def test_login_password_empty(self): # 密碼為空 login_action(d=self.d,username='test',password='')# 調用登錄函數 login_msg = self.d.find_element_by_css_selector('#login_error').text self.assertIn('密碼一欄為空',login_msg) def test_login_password_error(self): # 用戶名正確密碼錯誤時,登錄失敗 login_action(d=self.d,username='test',password='te124st123')# 調用登錄函數 login_msg = self.d.find_element_by_css_selector('#login_error').text self.assertIn('密碼不正確',login_msg) if __name__ == '__main__': unittest.main() ~~~ 修改后的`public.py`代碼如下 ~~~ from time import sleep def login_action(d,username,password): d.get('http://os-201804081018/blog/wp-login.php') d.find_element_by_css_selector('#user_login').send_keys(username) sleep(1) d.find_element_by_css_selector('#user_pass').send_keys(password) sleep(1) d.find_element_by_css_selector('#wp-submit').click() sleep(1) ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看