51TestingÈí¼þ²âÊÔÂÛ̳

 ÕÒ»ØÃÜÂë
 (×¢-²á)¼ÓÈë51Testing

QQ怬

Ö»ÐèÒ»²½£¬¿ìËÙ¿ªÊ¼

΢ÐŵǼ£¬¿ìÈËÒ»²½

ÊÖ»úºÅÂ룬¿ì½ÝµÇ¼

²é¿´: 1168|»Ø¸´: 0
´òÓ¡ ÉÏÒ»Ö÷Ìâ ÏÂÒ»Ö÷Ìâ

GoÖеĸ߼¶µ¥Ôª²âÊÔģʽ£¨Ï£©

[¸´ÖÆÁ´½Ó]
  • TAµÄÿÈÕÐÄÇé
    ²Áº¹
    Ç°Ìì 09:02
  • Ç©µ½ÌìÊý: 1042 Ìì

    Á¬ÐøÇ©µ½: 4 Ìì

    [LV.10]²âÊÔ×Ü˾Áî

    Ìøתµ½Ö¸¶¨Â¥²ã
    1#
    ·¢±íÓÚ 2022-3-4 10:10:28 | Ö»¿´¸Ã×÷Õß »ØÌû½±Àø |µ¹Ðòä¯ÀÀ |ÔĶÁģʽ
    ¡¡¡¡ÔÚ²âÊÔÖÐʹÓÃÍⲿÊý¾Ý
    ¡¡¡¡ÔÚGoÖУ¬ÄãÓ¦¸Ã°Ñ²âÊÔµÄÍⲿÊý¾Ý·ÅÔÚÒ»¸ö½Ð×ötestdata µÄĿ¼ÖС£µ±ÄãΪÄãµÄ³ÌÐò¹¹½¨¶þ½øÖÆÎļþʱ£¬testdata Ŀ¼»á±»ºöÂÔ£¬ËùÒÔÄã¿ÉÒÔʹÓÃÕâÖÖ·½·¨À´´æ´¢ÄãÏë²âÊÔ³ÌÐòµÄÊäÈë¡£
    ¡¡¡¡ÀýÈ磬ÈÃÎÒÃÇдһ¸öº¯Êý£¬´ÓÒ»¸ö¶þ½øÖÆÎļþÉú³Ébase64 ±àÂë¡£
    1. func getBase64Encoding(b []byte) string {
    2. ¡¡¡¡    return base64.StdEncoding.EncodeToString(b)
    3. ¡¡¡¡}
    ¸´ÖÆ´úÂë
    ¡¡ÎªÁ˲âÊÔÕâ¸öº¯Êý²úÉúÕýÈ·µÄÊä³ö£¬ÈÃÎÒÃÇ°ÑһЩÑù±¾ÎļþºÍËüÃÇÏàÓ¦µÄbase64 ±àÂë·ÅÔÚÎÒÃÇÏîÄ¿¸ù²¿µÄtestdata Ŀ¼Ï¡£
    1. ¡¡$ ls testdata
    2. ¡¡¡¡img1.jpg img1_base64.txt img2.jpg img2_base64.txt img3.jpg img3_base64.txt
    ¸´ÖÆ´úÂë
    ΪÁ˲âÊÔÎÒÃǵÄgetBase64Encoding() ¹¦ÄÜ£¬ÔËÐÐÏÂÃæµÄ´úÂë¡£
    1. func TestGetBase64Encoding(t *testing.T) {
    2. ¡¡¡¡    cases := []string{"img1", "img2", "img3"}
    3. ¡¡¡¡    for _, v := range cases {
    4. ¡¡¡¡        t.Run(v, func(t *testing.T) {
    5. ¡¡¡¡            b, err := os.ReadFile(filepath.Join("testdata", v+".jpg"))
    6. ¡¡¡¡            if err != nil {
    7. ¡¡¡¡                t.Fatal(err)
    8. ¡¡¡¡            }
    9. ¡¡¡¡            expected, err := os.ReadFile(filepath.Join("testdata", v+"_base64.txt"))
    10. ¡¡¡¡            if err != nil {
    11. ¡¡¡¡                t.Fatal(err)
    12. ¡¡¡¡            }
    13. ¡¡¡¡            got := getBase64Encoding(b)
    14. ¡¡¡¡            if string(expected) != got {
    15. ¡¡¡¡                t.Fatalf("Expected output to be: '%s', but got: '%s'", string(expected), got)
    16. ¡¡¡¡            }
    17. ¡¡¡¡        })
    18. ¡¡¡¡    }
    19. ¡¡¡¡}
    ¸´ÖÆ´úÂë
    ¡¡´ÓÎļþϵͳÖжÁȡÿ¸öÑù±¾ÎļþµÄ×Ö½Ú£¬È»ºóËÍÈëgetBase64Encoding() º¯Êý¡£Ëæºó½«Êä³öÓëÔ¤ÆÚÊä³ö½øÐбȽϣ¬Ô¤ÆÚÊä³öÒ²ÊÇ´Ótestdata Ŀ¼ÖлñÈ¡µÄ¡£
    ¡¡¡¡ÈÃÎÒÃÇͨ¹ýÔÚtestdata Öд´½¨Ò»¸ö×ÓĿ¼£¬Ê¹²âÊÔ¸üÈÝÒ×ά»¤¡£ÔÚÎÒÃǵÄ×ÓĿ¼ÖУ¬ÎÒÃǽ«Ìí¼ÓËùÓеÄÊäÈëÎļþ£¬ÔÊÐíÎÒÃǼòµ¥µØµü´úÿ¸ö¶þ½øÖÆÎļþ£¬²¢±È½Ïʵ¼ÊÊä³öºÍÔ¤ÆÚÊä³ö¡£
    ¡¡¡¡ÏÖÔÚ£¬ÎÒÃÇ¿ÉÒÔÌí¼Ó¸ü¶àµÄ²âÊÔ°¸Àý£¬¶ø²»ÐèÒª½Ó´¥Ô´´úÂë¡£
    1. ¡¡$ go test -v
    2. ¡¡¡¡=== RUN   TestGetBase64Encoding
    3. ¡¡¡¡=== RUN   TestGetBase64Encoding/img1
    4. ¡¡¡¡=== RUN   TestGetBase64Encoding/img2
    5. ¡¡¡¡=== RUN   TestGetBase64Encoding/img3
    6. ¡¡¡¡--- PASS: TestGetBase64Encoding (0.04s)
    7. ¡¡¡¡    --- PASS: TestGetBase64Encoding/img1 (0.01s)
    8. ¡¡¡¡    --- PASS: TestGetBase64Encoding/img2 (0.01s)
    9. ¡¡¡¡    --- PASS: TestGetBase64Encoding/img3 (0.01s)
    10. ¡¡¡¡PASS
    11. ¡¡¡¡ok      github.com/ayoisaiah/random     0.044s
    ¸´ÖÆ´úÂë
    ¡¡Ê¹ÓûƽðÎļþ
    ¡¡¡¡Èç¹ûÄãÔÚʹÓÃGoÄ£°å£¬×îºÃÊDzâÊÔÒ»ÏÂÉú³ÉµÄÊä³öÓëÔ¤ÆÚµÄÊä³ö£¬ÒÔÈ·ÈÏÄ£°åÊÇ·ñ°´Ô¤ÆÚ¹¤×÷¡£GoÄ£°åͨ³£±È½Ï´ó£¬ËùÒÔ²»½¨ÒéÏñÎÒÃÇÔÚ±¾½Ì³ÌÖÐÆù½ñΪֹËù×öµÄÄÇÑùÔÚÔ´´úÂëÖÐÓ²±àÂëÔ¤ÆÚÊä³ö¡£
    ¡¡¡¡ÈÃÎÒÃÇÀ´Ì½ÌÖÒ»ÏÂGoÄ£°åµÄÁíÒ»ÖÖ·½·¨£¬Ëü¿ÉÒÔÔÚÏîÄ¿µÄÕû¸öÉúÃüÖÜÆÚÄÚ¼ò»¯²âÊԵıàдºÍά»¤¡£
    ¡¡¡¡»Æ½ðÎļþÊÇÒ»ÖÖÌØÊâÀàÐ͵ÄÎļþ£¬°üº¬²âÊÔµÄÔ¤ÆÚÊä³ö¡£²âÊÔº¯Êý´Ó»Æ½ðÎļþÖжÁÈ¡£¬½«ÆäÄÚÈÝÓë²âÊÔµÄÔ¤ÆÚÊä³ö½øÐбȽϡ£
    ¡¡¡¡ÔÚÏÂÃæµÄÀý×ÓÖУ¬ÎÒÃǽ«Ê¹ÓÃhtml/template £¬Éú³ÉÒ»¸öHTML±í¸ñ£¬ÆäÖаüº¬¿â´æÖÐÿ±¾ÊéµÄÒ»ÐС£
    1. ¡¡¡¡type Book struct {
    2. ¡¡¡¡    Name          string
    3. ¡¡¡¡    Author        string
    4. ¡¡¡¡    Publisher     string
    5. ¡¡¡¡    Pages         int
    6. ¡¡¡¡    PublishedYear int
    7. ¡¡¡¡    Price         int
    8. ¡¡¡¡}
    9. ¡¡¡¡var tmpl = `<table class="table">
    10. ¡¡¡¡  <thead>
    11. ¡¡¡¡    <tr>
    12. ¡¡¡¡      <th>Name</th>
    13. ¡¡¡¡      <th>Author</th>
    14. ¡¡¡¡      <th>Publisher</th>
    15. ¡¡¡¡      <th>Pages</th>
    16. ¡¡¡¡      <th>Year</th>
    17. ¡¡¡¡      <th>Price</th>
    18. ¡¡¡¡    </tr>
    19. ¡¡¡¡  </thead>
    20. ¡¡¡¡  <tbody>
    21. ¡¡¡¡    {{ range . }}<tr>
    22. ¡¡¡¡      <td>{{ .Name }}</td>
    23. ¡¡¡¡      <td>{{ .Author }}</td>
    24. ¡¡¡¡      <td>{{ .Publisher }}</td>
    25. ¡¡¡¡      <td>{{ .Pages }}</td>
    26. ¡¡¡¡      <td>{{ .PublishedYear }}</td>
    27. ¡¡¡¡      <td>${{ .Price }}</td>
    28. ¡¡¡¡    </tr>{{ end }}
    29. ¡¡¡¡  </tbody>
    30. ¡¡¡¡</table>
    31. ¡¡¡¡`
    32. ¡¡¡¡var tpl = template.Must(template.New("table").Parse(tmpl))
    33. ¡¡¡¡func generateTable(books []Book, w io.Writer) error {
    34. ¡¡¡¡    return tpl.Execute(w, books)
    35. ¡¡¡¡}
    36. ¡¡¡¡func main() {
    37. ¡¡¡¡    books := []Book{
    38. ¡¡¡¡        {
    39. ¡¡¡¡            Name:          "The Odessa File",
    40. ¡¡¡¡            Author:        "Frederick Forsyth",
    41. ¡¡¡¡            Pages:         334,
    42. ¡¡¡¡            PublishedYear: 1979,
    43. ¡¡¡¡            Publisher:     "Bantam",
    44. ¡¡¡¡            Price:         15,
    45. ¡¡¡¡        },
    46. ¡¡¡¡    }
    47. ¡¡¡¡    err := generateTable(books, os.Stdout)
    48. ¡¡¡¡    if err != nil {
    49. ¡¡¡¡        log.Fatal(err)
    50. ¡¡¡¡    }
    51. ¡¡¡¡}
    ¸´ÖÆ´úÂë
    ÉÏÃæµÄgenerateTable() º¯Êý´ÓBook ¶ÔÏóµÄƬ¶ÏÖд´½¨HTML±í¡£ÉÏÃæµÄ´úÂ뽫²úÉúÒÔÏÂÊä³ö¡£
    1. ¡¡$ go run main.go
    2. ¡¡¡¡<table class="table">
    3. ¡¡¡¡  <thead>
    4. ¡¡¡¡    <tr>
    5. ¡¡¡¡      <th>Name</th>
    6. ¡¡¡¡      <th>Author</th>
    7. ¡¡¡¡      <th>Publisher</th>
    8. ¡¡¡¡      <th>Pages</th>
    9. ¡¡¡¡      <th>Year</th>
    10. ¡¡¡¡      <th>Price</th>
    11. ¡¡¡¡    </tr>
    12. ¡¡¡¡  </thead>
    13. ¡¡¡¡  <tbody>
    14. ¡¡¡¡    <tr>
    15. ¡¡¡¡      <td>The Odessa File</td>
    16. ¡¡¡¡      <td>Frederick Forsyth</td>
    17. ¡¡¡¡      <td>Bantam</td>
    18. ¡¡¡¡      <td>334</td>
    19. ¡¡¡¡      <td>1979</td>
    20. ¡¡¡¡      <td>$15</td>
    21. ¡¡¡¡    </tr>
    22. ¡¡¡¡  </tbody>
    23. ¡¡¡¡</table>
    ¸´ÖÆ´úÂë
    ¡¡ÎªÁ˲âÊÔÉÏÃæµÄº¯Êý£¬ÎÒÃǽ«²¶»ñʵ¼Ê½á¹û²¢ÓëÔ¤ÆÚ½á¹û½øÐбȽϡ£ÎÒÃǽ«ÏñÉÏÒ»½ÚÄÇÑù°ÑÔ¤ÆÚ½á¹û´æ´¢ÔÚtestdata Ŀ¼ÖУ¬È»¶ø£¬ÎÒÃDZØÐë×öһЩ¸Ä±ä¡£
    ¡¡¡¡¼ÙÉèÎÒÃÇÔÚÒ»¸ö¿â´æÖÐÓµÓÐÒÔϵÄÊé¼®ÁÐ±í¡£
    1. var inventory = []Book{
    2. ¡¡¡¡    {
    3. ¡¡¡¡        Name:          "The Solitare Mystery",
    4. ¡¡¡¡        Author:        "Jostein Gaarder",
    5. ¡¡¡¡        Publisher:     "Farrar Straus Giroux",
    6. ¡¡¡¡        Pages:         351,
    7. ¡¡¡¡        PublishedYear: 1990,
    8. ¡¡¡¡        Price:         12,
    9. ¡¡¡¡    },
    10. ¡¡¡¡    {
    11. ¡¡¡¡        Name:          "Also Known As",
    12. ¡¡¡¡        Author:        "Robin Benway",
    13. ¡¡¡¡        Publisher:     "Walker Books",
    14. ¡¡¡¡        Pages:         208,
    15. ¡¡¡¡        PublishedYear: 2013,
    16. ¡¡¡¡        Price:         10,
    17. ¡¡¡¡    },
    18. ¡¡¡¡    {
    19. ¡¡¡¡        Name:          "Ego Is the Enemy",
    20. ¡¡¡¡        Author:        "Ryan Holiday",
    21. ¡¡¡¡        Publisher:     "Portfolio",
    22. ¡¡¡¡        Pages:         226,
    23. ¡¡¡¡        PublishedYear: 2016,
    24. ¡¡¡¡        Price:         18,
    25. ¡¡¡¡    },
    26. ¡¡¡¡}
    ¸´ÖÆ´úÂë
    Õâ¸öͼÊéÇåµ¥µÄÔ¤ÆÚÊä³ö½«¿çÔ½Ðí¶àÐУ¬Òò´Ë£¬ºÜÄѽ«Æä×÷Ϊһ¸ö×Ö·û´®×ÖÃæ·ÅÔÚÔ´´úÂëÄÚ¡£
    1. <table class="table">
    2. ¡¡¡¡  <thead>
    3. ¡¡¡¡    <tr>
    4. ¡¡¡¡      <th>Name</th>
    5. ¡¡¡¡      <th>Author</th>
    6. ¡¡¡¡      <th>Publisher</th>
    7. ¡¡¡¡      <th>Pages</th>
    8. ¡¡¡¡      <th>Year</th>
    9. ¡¡¡¡      <th>Price</th>
    10. ¡¡¡¡    </tr>
    11. ¡¡¡¡  </thead>
    12. ¡¡¡¡  <tbody>
    13. ¡¡¡¡    <tr>
    14. ¡¡¡¡      <td>The Solitaire Mystery</td>
    15. ¡¡¡¡      <td>Jostein Gaarder</td>
    16. ¡¡¡¡      <td>Farrar Straus Giroux</td>
    17. ¡¡¡¡      <td>351</td>
    18. ¡¡¡¡      <td>1990</td>
    19. ¡¡¡¡      <td>$12</td>
    20. ¡¡¡¡    </tr>
    21. ¡¡¡¡    <tr>
    22. ¡¡¡¡      <td>Also Known As</td>
    23. ¡¡¡¡      <td>Robin Benway</td>
    24. ¡¡¡¡      <td>Walker Books</td>
    25. ¡¡¡¡      <td>308</td>
    26. ¡¡¡¡      <td>2013</td>
    27. ¡¡¡¡      <td>$10</td>
    28. ¡¡¡¡    </tr>
    29. ¡¡¡¡    <tr>
    30. ¡¡¡¡      <td>Ego Is The Enemy</td>
    31. ¡¡¡¡      <td>Ryan Holiday</td>
    32. ¡¡¡¡      <td>Portfolio</td>
    33. ¡¡¡¡      <td>226</td>
    34. ¡¡¡¡      <td>2016</td>
    35. ¡¡¡¡      <td>$18</td>
    36. ¡¡¡¡    </tr>
    37. ¡¡¡¡  </tbody>
    38. ¡¡¡¡</table>
    ¸´ÖÆ´úÂë
    ³ýÁ˶ԽϴóµÄÊä³öʵÓÃÍ⣬һ¸ö»Æ½ðÎļþ¿ÉÒÔ×Ô¶¯¸üкÍÉú³É¡£
    ¡¡¡¡ËäÈ»¿ÉÒÔдһ¸ö¸¨Öúº¯ÊýÀ´´´½¨ºÍ¸üлƽðÎļþ£¬µ«ÎÒÃÇ¿ÉÒÔÀûÓÃgoldie£¬Ò»¸öרÃÅΪ»Æ½ðÎļþ´´½¨µÄ¹¤¾ß¡£
    ¡¡¡¡ÓÃÏÂÃæµÄÃüÁî°²×°×îа汾µÄgoldie¡£
    1. ¡¡$ go get -u github.com/sebdah/goldie/v2
    ¸´ÖÆ´úÂë
    ÈÃÎÒÃǼÌÐøʹÓÃgoldieÀ´²âÊÔgenerateTable() º¯Êý¡£
    1. ¡¡func TestGenerateTable(t *testing.T) {
    2. ¡¡¡¡    var buf bytes.Buffer
    3. ¡¡¡¡    err := generateTable(inventory, &buf)
    4. ¡¡¡¡    if err != nil {
    5. ¡¡¡¡        t.Fatal(err)
    6. ¡¡¡¡    }
    7. ¡¡¡¡    actual := buf.Bytes()
    8. ¡¡¡¡    g := goldie.New(t)
    9. ¡¡¡¡    g.Assert(t, "books", actual)
    10. ¡¡¡¡}
    ¸´ÖÆ´úÂë
    ¡¡¡¡ÉÏÃæµÄ²âÊÔÔÚÒ»¸ö×ֽڵĻº³åÇøÖⶻñÁËgenerateTable() º¯ÊýµÄÊä³ö¡£È»ºó£¬Ëü½«»º³åÇøµÄÄÚÈÝ´«µÝ¸øgoldie ʵÀýµÄAssert() ·½·¨¡£»º³åÇøÖеÄÄÚÈݽ«Óëtestdata Ŀ¼ÖеÄbooks.golden ÎļþµÄÄÚÈݽøÐбȽϡ£
    ¡¡¡¡×î³õ£¬ÔËÐиòâÊÔ»áʧ°Ü£¬ÒòΪÎÒÃÇ»¹Ã»Óд´½¨books.golden Îļþ¡£
    1. $ go test -v
    2. ¡¡¡¡=== RUN   TestGenerateTable
    3. ¡¡¡¡    main_test.go:48: Golden fixture not found. Try running with -update flag.
    4. ¡¡¡¡--- FAIL: TestGenerateTable (0.00s)
    5. ¡¡¡¡FAIL
    6. ¡¡¡¡exit status 1
    7. ¡¡¡¡FAIL    github.com/ayoisaiah/random     0.006s
    ¸´ÖÆ´úÂë
    ´íÎóÐÅÏ¢½¨ÒéÎÒÃÇÌí¼Ó-update ±êÖ¾£¬Õ⽫Óûº³åÇøµÄÄÚÈÝ´´½¨books.golden Îļþ¡£
    1. $ go test -v -update
    2. ¡¡¡¡=== RUN   TestGenerateTable
    3. ¡¡¡¡--- PASS: TestGenerateTable (0.00s)
    4. ¡¡¡¡PASS
    5. ¡¡¡¡ok      github.com/ayoisaiah/random     0.006s
    ¸´ÖÆ´úÂë
    ÔÚËæºóµÄÔËÐÐÖУ¬ÎÒÃÇÓ¦¸Ãɾ³ý-update ±êÖ¾£¬ÕâÑùÎÒÃǵĻƽðÎļþ¾Í²»»á±»²»¶ÏµØ¸üС£
    ¡¡¡¡¶ÔÄ£°åµÄÈκθı䶼»áµ¼Ö²âÊÔʧ°Ü¡£ÀýÈ磬Èç¹ûÄ㽫¼Û¸ñ×ֶθüÐÂΪŷԪ¶ø²»ÊÇÃÀÔª£¬Äã»áÁ¢¼´ÊÕµ½Ò»¸ö´íÎó¡£ÕâЩ´íÎóµÄ·¢ÉúÊÇÒòΪgenerateTable() º¯ÊýµÄÊä³ö²»ÔÙ·ûºÏ»Æ½ðÎļþµÄÄÚÈÝ¡£
    ¡¡¡¡GoldieÌṩÁ˲îÒ칦ÄÜ£¬ÒÔ°ïÖúÄãÔÚÕâЩ´íÎó·¢Éúʱ·¢Ïֱ仯¡£
    1. $ go test -v
    2. ¡¡¡¡=== RUN   TestGenerateTable
    3. ¡¡¡¡    main_test.go:48: Result did not match the golden fixture. Diff is below:
    4. ¡¡¡¡        --- Expected
    5. ¡¡¡¡        +++ Actual
    6. ¡¡¡¡        [url=home.php?mod=space&uid=40658]@@[/url] -18,3 +18,3 @@
    7. ¡¡¡¡               <td>1990</td>
    8. ¡¡¡¡        -      <td>$12</td>
    9. ¡¡¡¡        +      <td>€12</td>
    10. ¡¡¡¡             </tr><tr>
    11. ¡¡¡¡        @@ -25,3 +25,3 @@
    12. ¡¡¡¡               <td>2013</td>
    13. ¡¡¡¡        -      <td>$10</td>
    14. ¡¡¡¡        +      <td>€10</td>
    15. ¡¡¡¡             </tr><tr>
    16. ¡¡¡¡        @@ -32,3 +32,3 @@
    17. ¡¡¡¡               <td>2016</td>
    18. ¡¡¡¡        -      <td>$18</td>
    19. ¡¡¡¡        +      <td>€18</td>
    20. ¡¡¡¡             </tr>
    21. ¡¡¡¡--- FAIL: TestGenerateTable (0.00s)
    22. ¡¡¡¡FAIL
    23. ¡¡¡¡exit status 1
    24. ¡¡¡¡FAIL    github.com/ayoisaiah/random     0.007s
    ¸´ÖÆ´úÂë
    ÔÚÉÏÃæµÄÊä³öÖУ¬¸Ã±ä»¯±»Çå³þµØÍ»³öÏÔʾ¡£ÕâЩ±ä»¯ÊǹÊÒâµÄ£¬ËùÒÔÎÒÃÇ¿ÉÒÔͨ¹ýʹÓÃ-update ±êÖ¾¸üлƽðÎļþ£¬Ê¹ÎÒÃǵIJâÊÔÔÙ´Îͨ¹ý¡£
    1. ¡¡$ go test -v -update
    2. ¡¡¡¡=== RUN   TestGenerateTable
    3. ¡¡¡¡--- PASS: TestGenerateTable (0.00s)
    4. ¡¡¡¡PASS
    5. ¡¡¡¡ok      github.com/ayoisaiah/random     0.006s
    ¸´ÖÆ´úÂë
    ½áÂÛ
    ¡¡¡¡ÔÚ±¾½Ì³ÌÖУ¬ÎÒÃÇÑо¿ÁËGoÖеÄһЩ¸ß¼¶²âÊÔ¼¼Êõ¡£Ê×ÏÈ£¬ÎÒÃÇÉîÈëÑо¿ÁËÎÒÃǵÄHTTP°ü£¬²¢Ñ§Ï°ÁËÈçºÎÓÃ×Ô¶¨Òå½Ó¿ÚÄ£ÄâÎÒÃǵÄHTTP¿Í»§¶Ë¡£È»ºó£¬ÎÒÃǻعËÁËÈçºÎÔÚ²âÊÔÖÐʹÓÃÍⲿÊý¾Ý²¢Ê¹ÓÃgoldie´´½¨»Æ½ðÎļþ¡£







    ·ÖÏíµ½:  QQºÃÓѺÍȺQQºÃÓѺÍȺ QQ¿Õ¼äQQ¿Õ¼ä ÌÚѶ΢²©ÌÚѶ΢²© ÌÚѶÅóÓÑÌÚѶÅóÓÑ
    ÊÕ²ØÊÕ²Ø
    ÄúÐèÒªµÇ¼ºó²Å¿ÉÒÔ»ØÌû µÇ¼ | (×¢-²á)¼ÓÈë51Testing

    ±¾°æ»ý·Ö¹æÔò

    ¹Ø±Õ

    Õ¾³¤ÍƼöÉÏÒ»Ìõ /1 ÏÂÒ»Ìõ

    СºÚÎÝ|ÊÖ»ú°æ|Archiver|51TestingÈí¼þ²âÊÔÍø ( »¦ICP±¸05003035ºÅ ¹ØÓÚÎÒÃÇ

    GMT+8, 2024-11-9 09:32 , Processed in 0.060239 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    ¿ìËٻظ´ ·µ»Ø¶¥²¿ ·µ»ØÁбí