有没有一种方法可以测试Flask模板是否包含链接?

时间:2018-11-23 12:00:49

标签: python python-2.7 unit-testing testing flask

我一直在测试路由是否存在

def test_index(self):
    r = self.app.get("/")
    self.assertEqual(200, r.status_code, "Status code was not 'OK'.")

我的模板具有指向另一个页面的超链接。有没有办法测试它是否存在?

1 个答案:

答案 0 :(得分:0)

好吧,如果要测试模板,则渲染的每个模板都是对某条路线的请求的结果。如果使用url_for()在模板中呈现url,则如果该URL指向不存在的路由,它将引发BuildError,并且服务器将返回状态码500。因此,您不会如果您只是检查路由,则无需手动分析模板以进行测试。

示例:

from flask import Flask, render_template_string

app = Flask(__name__)

@app.route('/index')
def index():
    return render_template_string("""
        {{ url_for('index') }}
        {{ url_for('blabla') }}
    """)


def test_index(self):
    r = self.app.get("/index")
    self.assertEqual(200, r.status_code, "Status code was not 'OK'.")

这将导致 routing.BuildError: Could not build url for endpoint 'blabla'. Did you mean 'static' instead?错误,这会使您的测试失败。

我希望这个解释很清楚!