from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import unittest
class mms_Demo(unittest.TestCase):
'''测试mms医药管理系统的登录功能'''
def setUp(self) -> None:
self.driver = webdriver.Chrome(r'D:\Program Files (x86)\Chromedriver\chromedriver_win32\chromedriver.exe')
self.url = 'http://localhost:8080/mms/login.html'
self.imgs = []
# 由于mms登陆的提示信息是js加载的 原始的页面上没有 所以使用隐式等待也行
self.driver.implicitly_wait(5)
def tearDown(self) -> None:
self.driver.quit()
# todo:测试输入正确的用户名 密码能否成功登陆 并显示正确的登录用户
def test_login_success(self):
self.driver.get(self.url)
self.driver.find_element('id', 'username').send_keys('test')
self.driver.find_element('id', 'password').send_keys('1201')
self.driver.find_element('xpath', '//input[@value="Login"]').click()
self.imgs.append(self.driver.get_screenshot_as_base64())
WebDriverWait(self.driver, 5).until(
EC.visibility_of_element_located(('id', 'loginName'))
)
login_name = self.driver.find_element('id', 'loginName').text
self.imgs.append(self.driver.get_screenshot_as_base64())
self.assertEqual('test', login_name)
# todo:测试输入错误的用户名 正确的密码能否登录失败 并正确显示提示信息
def test_login_username_fail(self):
self.driver.get(self.url)
self.driver.find_element('id', 'username').send_keys('error')
self.driver.find_element('id', 'password').send_keys('1201')
self.driver.find_element('xpath', '//input[@value="Login"]').click()
sign_text = self.driver.find_element('xpath', '//div[contains(text(), "没有此")]').text
self.imgs.append(self.driver.get_screenshot_as_base64()) # 保存截图
self.assertEqual(sign_text, '没有此用户')
# todo:测试输入正确的用户名 错误的密码能否登录失败 并正确显示提示信息
def test_login_password_fail(self):
self.driver.get(self.url)
self.driver.find_element('id', 'username').send_keys('test')
self.driver.find_element('id', 'password').send_keys('1234')
self.driver.find_element('xpath', '//input[@value="Login"]').click()
sign_text = self.driver.find_element('xpath', '//div[contains(text(), "密码错误")]').text
self.imgs.append(self.driver.get_screenshot_as_base64())
self.assertEqual(sign_text, '密码错误')
# todo:测试用户名为空 错误的密码能否登录失败 并正确显示提示信息
def test_login_null_username_fail(self):
self.driver.get(self.url)
self.driver.find_element('id', 'password').send_keys('1234')
self.driver.find_element('xpath', '//input[@value="Login"]').click()
sign_text = self.driver.find_element('xpath', '//div[contains(text(), "不能为空")]').text
self.imgs.append(self.driver.get_screenshot_as_base64())
self.assertEqual(sign_text, 'User Id不能为空')
def test_login_null_password_fail(self):
self.driver.get(self.url)
self.driver.find_element('id', 'username').send_keys('test')
self.driver.find_element('xpath', '//input[@value="Login"]').click()
sign_text = self.driver.find_element('xpath', '//div[contains(text(), "不能为空")]').text
self.imgs.append(self.driver.get_screenshot_as_base64())
self.assertEqual(sign_text, 'password不能为空')
使用HTMLTestRunner_cn生成测试报告
self.imgs用来存放截图存放截图,必须使用imgs否则无法保存截图
HTMLTestRunner_cn源码中一致使用imgs
import unittest
from HTMLTestRunner_cn import HTMLTestRunner
base_url = 'cases'
test_case = unittest.defaultTestLoader.discover(base_url + '/mms/', pattern='*.py')
rs = unittest.TestSuite(test_case)
run_test = HTMLTestRunner(
title='登录测试报告', # 测试报告标题
description='mms登录模块测试v1.0', # 测试报告描述
stream=open('test_html_report.html', 'wb'), # 测试报告保存位置
verbosity=2, # 测试报告详细等级
retry=3, # 测试用例失败 重试多少次
save_last_try=True, # 如果重试 是否只记录最后一次执行的结果
)
run_test.run(rs)
使用HTMLTestRunner运行测试