Flask

2017-01-12 16 views
6

"Flaskr" öğretici mikro-blog uygulaması uygulaması birim testleri Github gelen flaskr uygulama klonladı ve ben Testing Flask Applications öğreticiyi takip etmeye çalışıyorum. Benim dizin ağacı şöyle görünür şekilde Bonus: Testing the Application ardından, üst düzey flaskr dizine bir alt dizin test ekledik:Flask

. 
├── build 
│   ├── bdist.linux-x86_64 
│   └── lib.linux-x86_64-2.7 
│    └── flaskr 
│     ├── flaskr.py 
│     ├── __init__.py 
│     ├── schema.sql 
│     ├── static 
│     │   └── style.css 
│     └── templates 
│      ├── layout.html 
│      ├── login.html 
│      └── show_entries.html 
├── dist 
│   └── flaskr-0.0.0-py2.7.egg 
├── flaskr 
│   ├── flaskr.db 
│   ├── flaskr.py 
│   ├── flaskr.pyc 
│   ├── __init__.py 
│   ├── __init__.pyc 
│   ├── schema.sql 
│   ├── static 
│   │   └── style.css 
│   └── templates 
│    ├── layout.html 
│    ├── login.html 
│    └── show_entries.html 
├── flaskr.egg-info 
│   ├── dependency_links.txt 
│   ├── PKG-INFO 
│   ├── requires.txt 
│   ├── SOURCES.txt 
│   └── top_level.txt 
├── MANIFEST.in 
├── README 
├── setup.cfg 
├── setup.py 
├── test 
│   └── test_flaskr.py 
└── tests 
    └── test_flaskr.py 

orada da 'yerleşik' olan Not Bu dizine tests yılında testlerde; ancak, dizinde tests yılında test_flaskr.py testleri yazıyorum. Şimdiye kadar sadece bir testi çalışıyorum:

import os 
import flaskr 
import unittest 
import tempfile 

class FlaskrTestCase(unittest.TestCase): 

    def setUp(self): 
     self.db_fd, flaskr.app.config['DATABASE'] = tempfile.mkstemp() 
     flaskr.app.config['TESTING'] = True 
     self.app = flaskr.app.test_client() 
     with flaskr.app.app_context(): 
      flaskr.init_db() 

    def tearDown(self): 
     os.close(self.db_fd) 
     os.unlink(flaskr.app.config['DATABASE']) 

    def test_empty_db(self): 
     rv = self.app.get('/') 
     assert b'No entries here so far' in rv.data 

if __name__ == '__main__': 
    unittest.main() 

Ancak, aşağıdaki hatayı alıyorum bu çalıştırmayı denerseniz:

Traceback (most recent call last): 
    File "/home/kurt/dev/scratch/flask/examples/flaskr/test/test_flaskr.py", line 13, in setUp 
    flaskr.init_db() 
AttributeError: 'module' object has no attribute 'init_db' 

bu hatayı anlamıyorum. Benim flaskr.pyhttps://github.com/pallets/flask/blob/master/examples/flaskr/flaskr/flaskr.py üzerindeki ile aynı olup tanımlanmış bir init_db işlevi vardır. Ünite testini nasıl yapabilirim? Eğer komut flaskr paketini aldığınızda

cevap

11

, değişkenleri erişebilir, vb fonksiyonlar ilan ve kod sağlanan flask/__init__.py tanımlı değil flaskr/__init__.py

init_db tanımlanan flask/__init__.py tanımlanmalıdır için init_db bekliyor . import flaskrfrom flaskr import flaskr için

Değiştir:

  1. şöyle test_flaskr.py ithalat deyimi değiştirin flaskr.flaskr.init_db()

  2. ile flaskr.init_db() değiştirin: Sahip olduğunuz sorunu gidermek için iki yol vardır