testing postgres db python

前端 未结 1 939
别跟我提以往
别跟我提以往 2021-01-05 10:26

I don\'t understand how to test my repositories.

I want to be sure that I really saved object with all of it parameters into database, and when I execute my SQL st

1条回答
  •  清酒与你
    2021-01-05 10:48

    The best solution for this is to use the testing.postgresql module. This fires up a db in user-space, then deletes it again at the end of the run. You can put the following in a unittest suite - either in setUp, setUpClass or setUpModule - depending on what persistence you want:

    import testing.postgresql
    
    def setUp(self):
        self.postgresql = testing.postgresql.Postgresql(port=7654)
        # Get the url to connect to with psycopg2 or equivalent
        print(self.postgresql.url())
    
    def tearDown(self):
        self.postgresql.stop()
    

    If you want the database to persist between/after tests, you can run it with the base_dir option to set a directory - which will prevent it's removal after shutdown:

    name = "testdb"
    port = "5678"
    path = "/tmp/my_test_db"
    testing.postgresql.Postgresql(name=name, port=port, base_dir=path)
    

    Outside of testing it can also be used as a context manager, where it will automatically clean up and shut down when the with block is exited:

    with testing.postgresql.Postgresql(port=7654) as psql:
        # do something here
    

    0 讨论(0)
提交回复
热议问题