开发第一件事情要做的就是配置好环境,装上Django和selenium。接下来就可以开始照着书上代码来撸了。
1.1 遵从测试山羊的教诲,没有测试什么也别做
functional_tests.py
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://localhost:8000')
assert 'Django' in browser.title
这段代码看着很简单,跑一下就好了,实质上坑非常多。
坑1: Firefox有个单独的驱动叫geckodriver,不装这个就会报错,提示'geckodriver'要在PATH里
解决方法:1. 到github下载geckodriver这个驱动
2. 安装并解压,把geckodriver的执行文件放到/usr/local/bin里(/usr/local/bin/已经在PATH里)
第2步花了我最长的时间,一开始不知道Mac的PATH和Windows不一样,是没有一个界面能直接添加的,只能先打开Terminal,然后 sudo vi ~/.bash_profile, 再添加一行 export PATH=$PATH:/Applications/geckodriver进去。执行的时候发现第2个错误,叫'NotADirectoryError: [Errno 20] Not a directory'。这时候才明白放在PATH里的必须是文件夹,不是执行文件。于是便将geckodriver挪到了/usr/local/bin里,再执行上述代码,终于跑通了,Firebox浏览器也出来了。
坑2: 书中默认本地是开了服务端的,端口是8000
解决方法: 对照着flask的教程写了个最简单的服务端,让测试程序有服务端连就可以了。
flask_server.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return('<h1>Hello Flask</h1>')
if __name__ == '__main__':
app.run(debug=True)
没有服务端的情况下执行functional_tests.py会有'reach error page'的错误。其实可以不用连localhost的,换成任意一个网站后续的Assert的代码都是可以运行的。