使用mock对conn()进行单元测试:
app.py
import mysql.connector
import os,urlparse
def conn():
if 'DATABASE_URL' in os.environ:
url=urlparse(os.environ['DATABASE_URL'])
g.db = mysql.connector.connect(user=url.username,password=url.password, host=url.hostname,database=url.path[1:])
else mysql.connector.error.Errors as err:
return "Error
Run Code Online (Sandbox Code Playgroud)
test.py
def test_conn(self):
with patch(app.mysql.connector) as mock_mysql:
with patch(app.os.environ) as mock_environ
con()
mock_mysql.connect.assert_callled_with("credentials")
Run Code Online (Sandbox Code Playgroud)
错误:未调用断言 mock_mysql.connect.assert_called_with
.
我认为这是因为'Database_url'不在我修补的os.environ中,因为没有对mysql_mock.connect进行测试调用.
问题:
1我需要做些什么改变才能使这个测试代码工作?
我还要修补'urlparse'吗?
我正在尝试使用 gock 模拟多个 http 请求进行单元测试,但出现此错误:
Error: Get https://192.64.23.33/q1/status: gock: cannot match any request
Error: Get https://194.55.5.6/q1/status: gock: cannot match any request
Run Code Online (Sandbox Code Playgroud)
代码:
func GetEmployee(url string, cli *http.Client) *Response {
//Do something
return Response
}
func company(url []string, cli *http.Client) []string {
for employee := range url {
resultList := GetEmployee(employee, cli)
//Process and return an array
return resultList
}
}
Run Code Online (Sandbox Code Playgroud)
单元测试:
func TestCompany(t *Testing.t){
Convey("testing function company",t,func() {
expected := &Response: {
Name: "xyz",
ID: 1",
Status: "active",
}
MockCli …
Run Code Online (Sandbox Code Playgroud) 我正在尝试了解通道和 goroutines 并尝试编写一个 goroutine 来向服务器发出并发 API 请求
但是当我使用 goroutine 运行代码时,它似乎花费了与没有 goroutine 相同的时间。
func sendUser(user string, ch chan<- string) {
resp,err := http.get("URL"/user)
//do the processing and get resp=string
ch <- resp
}
func AsyncHTTP(users []string) ([]string, error) {
ch := make(chan string)
var responses []string
var user string
for _ , user = range users {
go sendUser(user, ch)
for {
select {
case r := <-ch:
if r.err != nil {
fmt.Println(r.err)
}
responses = append(responses, r)
**//Is there …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将数据插入 MySQL 表中。我能够连接到数据库,但在尝试插入数据时出现内部服务器错误。
from flask import Flask
from flaskext.mysql import MySQL
mysql = MySQL()
app = Flask(__name__)
app.config['MYSQL_DATABASE_USER'] = 'root'
app.config['MYSQL_DATABASE_DB'] = 'test'
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
mysql.init_app(app)
@app.route("/")
def create_table():
cursor = mysql.get_db().cursor()
query = "CREATE TABLE potlala (id INT NOT NULL PRIMARY KEY, name VARCHAR(40), email VARCHAR(40))"
query = "INSERT INTO pot13 (id, name, email) VALUES ('2222', 'Maria', 'mariaz@activestate.com')"
cursor.execute(query)
return "123"
if __name__ == "__main__":
app.run()
Run Code Online (Sandbox Code Playgroud) 我是golang的新手,从python切换到golang.如何在"开关"中转换此if if语句
type Client struct {
Type string `json:"type"`
}
Run Code Online (Sandbox Code Playgroud)
然后我像这样初始化这个结构:
a:= Client{"v1"}
if a.Type == "v1" {
if err := apiClient.v1("I am version one"); err != nil {
log.Printf(" Error: Sending type v1")
return err
}
} else if a.Type == "v2" {
if err := apiClient.v2("I am version 2"); err != nil {
log.Printf(" Error: Sending type v2\n")
return err
}
} else {
return errors.New(fmt.Sprintf(" Error: Invalid mertype...This Type"))
}
Run Code Online (Sandbox Code Playgroud) go ×3
python ×2
unit-testing ×2
channel ×1
concurrency ×1
flask ×1
goroutine ×1
mocking ×1
mysql ×1
python-3.x ×1