PythonWeb
  • Introduction
  • Python Web 开发: 测试驱动方法
    • 准备工作和应具备的知识
    • 前言
    • 第一部分 TDD 和 Django 基础
      • 第 1 章 使用功能测试协助安装 Django
      • 第 2 章 使用 unittest 模块扩展功能测试
      • 第 3 章 使用单元测试测试简单的首页
      • 第 4 章 编写这些测试有什么用
      • 第 5 章 保存用户输入
      • 第 6 章 完成最简可用的网站
    • 第二部分 Web 开发要素
      • 第 7 章 美化网站: 布局, 样式, 及其测试方法
      • 第 8 章 使用过渡网站测试部署
      • 第 9 章 使用 Fabric 自动部署
      • 第 10 章 输入验证和测试的组织方式
      • 第 11 章 简单的表单
      • 第 12 章 高级表单
      • 第 13 章 试探 JavaScript
      • 第 14 章 部署新代码
    • 第三部分 高级话题
      • 第 15 章 用户认证_集成第三方插件以及 JavaScript 模拟技术的使用
      • 第 16 章 服务器端认证,在 Python 中使用模拟技术
      • 第 17 章 测试固件,日志和服务器端调试
      • 第 18 章 完成My Lists页面:由外而内的TDD
      • 第 19 章 测试隔离和倾听测试的心声
      • 第 20 章 持续集成
      • 第 21 章 简单的社会化功能,页面模式,以及练习
      • 第 22 章 测试运行速度的快慢和炽热的岩浆
    • 附录
      • 附录 A PythonAnywhere
      • 附录 B 基于类的 Django 视图
      • 附录 C 使用 Ansible 配置服务器
      • 附录 D 测试数据库迁移
Powered by GitBook
On this page
  • A.1 使用 Xvfb 在 Firefox 中运行 Selenium 会话
  • A.2 以 PythonAnywhere Web 应用的方式安装 Django
  • A.3 清理 /tmp 目录
  • A.4 截图
  • A.5 关于部署

Was this helpful?

  1. Python Web 开发: 测试驱动方法
  2. 附录

附录 A PythonAnywhere

A.1 使用 Xvfb 在 Firefox 中运行 Selenium 会话

PythonAnywhere 是只有终端的环境,所以没有显示器就无法打开 Firefox。但是我们可以使用虚拟显示器。

解决办法是使用 Xvfb(X Vritual Framebuffer 的简称)。在没有真正的显示器的服务器中,Xvfb 会启动一个虚拟显示器,供 Firefox 使用。

xvfb-run 命令的作用是,在 Xvfb 中执行下一个命令。使用这个命令就会看到预期失败:

xvfb-run python3 functional_tests.py

A.2 以 PythonAnywhere Web 应用的方式安装 Django

安装 Django。不建议使用 django-admin.py start project 命令,推荐使用 PythonAnywhere "Web" 选项卡中的快速设置。添加一个新 Web 应用,选择 Django 和 Python 3,然后在项目名中填写 superlists。

而且,不要在终端里运行测试服务器,让它运行在地址 localhost:8000 上,可以使用 PythonAnywhere 为 Web 应用提供的真实地址。

每次修改代码之后都要点击 “Reload Web App”(重新加载 Web 应用)按钮,更新网站。

也可以在终端运行开发服务器,但有个问题,PythonAnywhere 的终端不一定运行在同一台服务器中,所以无法保证运行测试的终端和运行服务器的终端是同一个。而且,如果在终端里运行服务器,没有简单的方法视觉检查网站的外观。

A.3 清理 /tmp 目录

Selenium 和 Xvfb 会在 /tmp 目录中留下很多垃圾,如果关闭的方式不优雅,情况更糟(所以前文才要使用 try/finally 语句)。

遗留的东西太多,可能会用完存储配额,所以要经常清理 /tmp 目录:

rm -rf /tmp/*

A.4 截图

建议使用 time.sleep 在功能测试运行的过程中暂停一会儿,这样才能在屏幕上看到 Selenium 浏览器。在 PythonAnywhere 做不到这一点,因为浏览器运行在虚拟显示器中。不过你可以检查线上网站。

对运行在虚拟显示器中的测试做视觉检查,最好的方法是使用截图。

A.5 关于部署

如果想一直使用 PythonAnywhere,可以把应用部署到其他域名下。你需要一个自己的域名和一个 PythonAnywhere 付费账户。就算不这么做,也得确保功能测试能在真实的过渡网站中运行,而不能使用 LiveServerTestCase 提供的多线程服务器。

Previous附录Next附录 B 基于类的 Django 视图

Last updated 5 years ago

Was this helpful?