首先要说的是,此系列(如果不断掉的话)博客为学习《python web开发 –测试驱动方法》此书的过程。如果感兴趣的话请购买实体书。具体为:
Test-Driven Development with Python by Harry Percival(O’Reilly).Copyright 2014 Harry Percival,978-1-449-36482-3
此书网站地址为:http://shop.oreilly.com/product/0636920051091.do
使用语言:python3.6,需了解html,css,javascript
会用:git,若不了解请参考https://cloud.tencent.com/community/article/527818,当然最好自己找本书认真去学。
平台:windows,安装有firefox,IDE为pycharm
假设你已经安装并设定了python3的环境变量(https://www.python.org),你需要安装django,selenium,windows需要安装geckodriver,参考http://blog.csdn.net/wslg1010/article/details/52997070
注意:firefox很可能因为版本过高而导致selenium没有支持,若无法使用请换低版本firefox,地址为:http://ftp.mozilla.org/pub/firefox/releases/
熟悉django
了解简单网站的建立和部署过程。
熟悉tdd(Test-Driven Development)流程
想知道那个准备时期麻烦的selenium的作用吗?
如果你按照步骤完成的话,编写一个python文档:
from selenium import webdriver
browser=webdriver.Firefox()
browser.get('https://github.com')
等一会儿就可以看到firefox打开了github.com并停留在桌面上。这是功能测试的重要方法。是不是很神奇?
你需要运行起django。
如果你使用pycharm,你只需要建立一个django项目,然后在view-》tool windows-》terminal打开控制台。
如果你不是用pycharm,win+r 输入cmd enter后到你想要安装的地址输入:
django-admin.py startproject *(你想要起的项目名字)
好吧,最好学习cmd控制台命令,这个百度就好。
完成之后会出现下图类似的文件夹和文件。
无论怎样,接下来在cmd,或者pycharm中的控制台输入:python manage.py runserver(我的由于python2 和3都在电脑上,所以使用的是:py -3 manage.py runserver)
打开浏览器,进入localhost:8000即可看到如下图:
相当不错,接下来将selenium和django结合起来。
毕竟我读的书是驱动测试方法,一切以测试为起点。所以我们首先要设计一个过程:
有人知道了你正在设计网站,他问你并打开了这个网站,他发现上面那个网页,唔,特点就是:title是Welcome to Django。唔,他放弃并关闭了浏览器。
假设你的django还在运行,否则回到第二部即可。
接着就可以编写一下代码:
from selenium import webdriver
#one open firefox
browser=webdriver.Firefox()
#he open the website
browser.get('http://localhost:8000')
#he find welcome to django in title
assert 'Welcome to Django' in browser.title
#he quit
browser.close()
运行后发现程序自己打开了firefox,然后自动关闭了。perfect。但是咱们要测试的并不是django的开始界面,而是咱们自己的网站,那么就要修改测试的内容。并且用类将测试面向对象化是个不错的选择。那么上述代码可以改为:
from selenium import webdriver
import unittest
class FirstTest(unittest.TestCase):
#one open firefox
def setUp(self):
self.browser=webdriver.Firefox()
#he quit
def tearDown(self):
self.browser.close()
#he open the website and find To-Do in title
def test_new_user_get_the_title(self):
self.browser.get('http://localhost:8000')
self.assertIn('To-Do',self.browser.title)
self.fail('Finish the Test')
if __name__ == '__main__':
unittest.main(warnings='ignore')
其中,unittest是python标准库中的测试模块,其中有setUp和tearDown两个函数,是特殊的方法,用于firefox的打开和关闭。unittest中测试必须使用test_开头的方法,起名时最好能够完整表达测试的目的。
接下来不出所料报错:
Traceback (most recent call last): File
“C:\Users\giligiliai\Desktop\Hello-World\1.py”, line 17, in
test_new_user_get_the_title
self.assertIn(‘To-Do’,self.browser.title) AssertionError: ‘To-Do’ not found in ‘Welcome to Django’———————————————————————- Ran 1 test in 10.370s
FAILED (failures=1)
偶尔在测试中要使用到等待的方法,因为我们也可能需要看到浏览器的反应,使用:
self.browser.implicitly_wait(3)
可以使selenium停止3秒。
好吧,这部分失败了,也成功了。用git将代码版本控制起来是个不错的选择。既然假设已经会用git那这部分就不再阐述。至此准备完成。接下来才是正餐。