testsql
Generate test data from SQL files before testing and clear it after finished
About testsql
TestSQL

Generate test data from SQL files before testing and clear it after finished.
Contents
Installation
go get github.com/zhulongcheng/testsql
Usage
Create a folder for the table-schema file and sql files:
testsql
├── fixtures
│ └── users.sql
└── schema.sql
The table-schema file include all tables schema, it would be like this:
CREATE TABLE `users` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(32) CHARACTER SET utf8mb4 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
The sql file would be like this:
INSERT INTO `users` (`id`, `name`)
VALUES
(1, 'foo');
Your tests would be like this:
var TS *testsql.TestSQL
func newTS() *testsql.TestSQL {
dsn := "user:password@tcp(host:port)/test_db_name"
tableSchemaPath := "testsql/schema.sql"
dirPath := "testsql/fixtures"
ts := testsql.New(dsn, tableSchemaPath, dirPath)
return ts
}
func initTestDB() {
TS = newTS()
// set sql-driver/orm to read/write data from TS's DSN
// Driver = sql.Open(TS.Config.DSN)
// ORM = ORM.New(TS.Config.DSN)
}
func TestMain(m *testing.M) {
initTestDB()
r := m.Run()
TS.DropTestDB()
os.Exit(r)
}
func TestUser(t *testing.T) {
TS.Use("users.sql")
defer TS.Clear()
// user := GetUserByID(1)
// if user.name != "foo" {
// t.Errorf("not equal, expected: %s, actual: %s", "foo", user.name)
// }
}
API Reference
TestSQL.Exec generates test data from sql string.
TestSQL.Use generates test data from sql files.
TestSQL.Clear deletes data of all tables
TestSQL.DropTestDB drops the database created by TestSQL.
FQA
Set sql-driver/orm to read/write data from TestSQL's DSN
db := yourSQLDriver.Open(TS.Config.DSN)
// or db := yourORM.Open(TS.Config.DSN)
yourModel.SetDB(db) // reset db
See also
Frequently Asked Questions
What is testsql?
testsql is a Testing library for the Go programming language. Generate test data from SQL files before testing and clear it after finished
How do I install testsql?
Install testsql with the Go module system using `go get zhulongcheng/testsql`. Check the repository for the current installation instructions.
What category does testsql belong to?
testsql is listed under Testing, specifically Testing Frameworks.